C#でForm1からForm2をShowDialog(this)で開き、
Form2が閉じる時にForm2のtextBoxのTextプロパティを取得したいです。
今のところこういうかんじです。
Form2からForm1へ値を渡すにはどうしたらいいのでしょうか。
C#でForm1からForm2を開き・・・
Re: C#でForm1からForm2を開き・・・
FormをCloseしただけでは,テキストボックスは破棄されません。
なので,
つまり,Form2からForm1へ値を渡すのではなく,Form1がForm2の値を取得します。
# or Form2にForm1のインスタンスを渡しておいて,Form2がForm1のメソッドを呼び出すのも可。
この手の質問はよくあるのですが,他のフォームのコントロールは直接触らず,専用のプロパティを通じて取得するのが基本です。
さらに言うなら,専用のオブジェクトを介してデータはやりとりし,フォームのプロパティすら使わないのが理想です。
# ModelとPresentationを分離するのは本来基本的な事項なのですが……。
なので,
- Form2にtextBox1.Textを返すプロパティを用意する
- Form1側でShowDialogから戻ってきた時に,Form2の,先のプロパティを使って必要な設定を行う
つまり,Form2からForm1へ値を渡すのではなく,Form1がForm2の値を取得します。
# or Form2にForm1のインスタンスを渡しておいて,Form2がForm1のメソッドを呼び出すのも可。
この手の質問はよくあるのですが,他のフォームのコントロールは直接触らず,専用のプロパティを通じて取得するのが基本です。
さらに言うなら,専用のオブジェクトを介してデータはやりとりし,フォームのプロパティすら使わないのが理想です。
# ModelとPresentationを分離するのは本来基本的な事項なのですが……。
Re: C#でForm1からForm2を開き・・・
とりあえず・・・ですが、こんな感じですかね。
// Form1
public string TEXT;
private void button1_Click(object sender, EventArgs e)
{
using (Form2 f2 = new Forms2())
{
f2.TEXT = TEXT; // ※Form1のTEXTの値でForm2のTEXTを初期化したい場合にはこの行を追加すること
f2.ShowDialog();
TEXT = f2.TEXT;
}
}
// Form2
public string TEXT
{
get { return textBox1.Text; }
set { textBox1.Text = value; }
}
private void button1_Click(object sender, EventArgs e)
{
// Form2を閉じる
Close();
}
Re: C#でForm1からForm2を開き・・・
YuOさん、教えていただきどうもありがとうございました。
基本的なことができていなかったようです。
アドバイスをいただいてコードを直してちゃんと動きました。
ありがとうございました。今後ともよろしくお願いいたします。
基本的なことができていなかったようです。
アドバイスをいただいてコードを直してちゃんと動きました。
ありがとうございました。今後ともよろしくお願いいたします。