- ベストアンサー
C#でプログラミング リストボックスの内容を違うフォームのコンボボックスに呼び込みたい
- C#でプログラミングをしていると、リストボックスの内容を別のフォームのコンボボックスに表示したいという要望があります。
- 具体的には、Form1とForm2という2つのフォームがあり、Form1のコンボボックスの内容をForm2のリストボックスに反映させたいとのことです。
- ただし、既存のコンボボックスの内容を変更した場合に、Form1に反映されない問題が発生しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Form2を閉じるコードは現状出来ているのは? > button2を押すとlistbox1の内容がテキストファイルに書き込まれ、 > form1に戻ります。ここまではできています。 ですから Form1のbutton1のClickイベントで Form2 frm2 = new Form2(); frm2.ShowDialog( this ); // Form2を閉じた後 書き込まれたテキストを読み直して // コンボボックスを再設定 comboBox1.Items.Clera(); ファイルのオープン リード、Itemsへの追加 ファイルのクローズ といった流れになるかと ・・・ > 新たにform1ができてしまいませんか? どこの部分でしょうか? 現状のコードがどのようになっていて それを実行した際に 希望する動作とどのような差異が発生しているのかを明示しましょう Form1のLoad,button1_Click、Form2のLoad,button1_Clickなど関係箇所のコードの抜粋でいいですから
その他の回答 (1)
- redfox63
- ベストアンサー率71% (1325/1856)
Form2はどのように表示しているのでしょう モーダルで表示しているのならその処理が終了したときにファイルの読み直しをしてみましょう モードレスでの表示ならばForm1側にPublicなメソッドを準備してこれをForm2を閉じる(または非表示)場合に呼び出せばいいのではないかと思います モーダルな場合 Form2 frm = new Form2(); frm.ShowDialog( this ); // ここにファイルの読み直し処理を記述 モードレスならば public void FileReRead() { // ファイルの読み直し処理 } を準備して Form2 frm2 = new Form2(); frm2.Show( this ); として呼び出し Form2側の終了処理で Form1 perent = (Form1)this.Owner; perent.FileReRead(); といった具合で ・・・
補足
答えていただきありがとうございます。 Form2はモーダルで表示しています。 redfox63さんが教えてくれたプログラムだと、form2が閉じないし、新たにform1ができてしまいませんか?? 私がしたいのは、form2をモーダルで表示し、設定を終えbutton2を押すとform2が消え、表示されていたform1のcomboboxにlistbox1の内容を読み込めるようにしたいのですが... どのようにしたらよいですか??
お礼
すみません。できました!! ありがとうございます。