アプリ版:「スタンプのみでお礼する」機能のリリースについて

Form1とform2がある。
form1には、combobox1とbutton1がある。
form2には、listbox1とbutton2がある。(ほかにも追加や削除ボタンあり)

form1は実行されたときに表示されるフォームです。
form2はcombobox1の項目(リスト)を編集するフォームです。

項目を変更可能にしているので、txtファイルに書き込んだり、読み込んだりさせています。

プログラムを実行したときにcombobox1にテキストファイルが読み込まれます。
button1を押すと、Form2が表示され、listbox1に同じテキストファイルが読み込まれます。(form2では項目を追加したり、削除が可能です。)button2を押すとlistbox1の内容がテキストファイルに書き込まれ、form1に戻ります。ここまではできています。

しかし、combobox1には最初に実行させたときにしか、テキストファイルが読み込まれないので、form2で変更しても反映されません。

button2を押した時に、form1を更新したりできないのでしょうか??

どなたかわかる方はいませんか??
お願いします。

A 回答 (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など関係箇所のコードの抜粋でいいですから
    • good
    • 0
この回答へのお礼

すみません。できました!!
ありがとうございます。

お礼日時:2008/12/17 14:47

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の内容を読み込めるようにしたいのですが...

どのようにしたらよいですか??

補足日時:2008/12/16 23:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!