C++/CLIは筋が悪いのでC#を使った方が勉強しやすいと思う。俺はC#の仕様を何も知らないので、このまま進める。
1日目で追加したFolderBrowserDialogについて、少しだけ説明を追加しておく。フォームデザイナ上で追加すると
this->folderBrowserDialog1 = (gcnew System::Windows::Forms::FolderBrowserDialog());
などのコードを自動生成してくれるので、メンバ変数(folderBrowserDialog1)を使うだけで、フォルダ選択ダイアログが表示される。でまぁ、適当にフォームを作ってみた。Folder選択をクリックすると、フォルダ選択ダイアログが表示されて、左のTextBoxに選択したフォルダのパスが表示される。
Click関数は、自動生成されたコードなのでその中身を書く。
System::Void FolderSelect_Click(System::Object^ sender, System::EventArgs^ e) { // Show the FolderBrowserDialog. System::Windows::Forms::DialogResult result = folderBrowserDialog1->ShowDialog(); if ( result == ::DialogResult::OK ) { this->TextBox_SavePath->Text = this->folderBrowserDialog1->SelectedPath; // 復帰と同時にTextBoxの表示は更新される(どこの処理を通っているんだ?) } }
基本的に、msdnのサンプルコードFolderBrowserDialog Class (System.Windows.Forms) | Microsoft Docsのままだ。ShowDialog()でダイアログが表示されて、ダイアログでOKを選択していたら、TextBoxの表示文字に代入しているだけ。
あとコメントにも書いているけど、テスト動作させてみるとこれだけでTextBoxの表示を更新してくれている。多分、何かのイベントが発生しているのだと推測しているけど、良くわからない。そのうち、理解できるだろう。
VC++のエディタで候補を表示させるために、this, this, thisと書くのがウザ過ぎる。消しても問題ないけど、面倒なのでそのままにしている。VC++のエディタも何とかして欲しい。