トップ回答者
Windows Forms から値を返す方法

質問
-
恐れ入ります。
Windows Forms に値を渡す方法は、
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/4c3bc940-179d-478d-bfe3-53a8d96105a8
で、教わったのですが、今度は、
Windows Forms から値を返す方法を知りたくなりました。
この場合は、どうしたらよいのでしょうか?
ちなみに、
DialogResult でのOK, Cancel などの値を取得することはできるのですが、
子フォームのTextBox などに入力した値を親フォームで取得することができません。
よろしくお願いします。- 編集済み yasheeki 2010年2月6日 3:15 説明不足
回答
-
/// <summary> /// 親フォーム /// </summary> public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// ボタンクリックのイベントハンドラ /// </summary> private void button1_Click(object sender, EventArgs e) { Form2 form = new Form2(); try { if (form.ShowDialog() == DialogResult.OK) { this.textBox1.Text = form.MyProperty; } } finally { form.Dispose(); } } } /// <summary> /// 子フォーム /// </summary> public partial class Form2 : Form { /// <summary> /// プロパティ /// </summary> public string MyProperty { get { return textBox1.Text; } } public Form2() { InitializeComponent(); } }
上記のように、プロパティを設けて呼び出し元で取得すればいいです。- 回答としてマーク 高橋 春樹 2010年2月22日 2:14
-
何通りかのやり方がありますが、
1つはShowDialogの戻り値として取得する方法と、メソッドやプロパティを介して取得する方法が考えられます。
※ちなみに、この例ではpublic DialogResult ShowDialog(int parameter)とpublic string ShowDialog(int parameter)は引数が同じなため、共存できません。public partial class FindForm : Form { public FindForm() { InitializeComponent(); } public DialogResult ShowDialog(int parameter) { // parameterを使用した何らかの処理 // 画面を表示 return base.ShowDialog(); } internal string GetInputText() { // public DialogResult ShowDialog(int parameter)を使用した場合はこちら return textBox1.Text; } // ShowDialogの戻り値として受け取る場合はこちら public string ShowDialog(int parameter) { // parameterを使用した何らかの処理 // 画面を表示 base.ShowDialog(); return textBox1.Text; } }
- 回答としてマーク yasheeki 2010年2月6日 9:37
すべての返信
-
/// <summary> /// 親フォーム /// </summary> public partial class Form1 : Form { public Form1() { InitializeComponent(); } /// <summary> /// ボタンクリックのイベントハンドラ /// </summary> private void button1_Click(object sender, EventArgs e) { Form2 form = new Form2(); try { if (form.ShowDialog() == DialogResult.OK) { this.textBox1.Text = form.MyProperty; } } finally { form.Dispose(); } } } /// <summary> /// 子フォーム /// </summary> public partial class Form2 : Form { /// <summary> /// プロパティ /// </summary> public string MyProperty { get { return textBox1.Text; } } public Form2() { InitializeComponent(); } }
上記のように、プロパティを設けて呼び出し元で取得すればいいです。- 回答としてマーク 高橋 春樹 2010年2月22日 2:14
-
何通りかのやり方がありますが、
1つはShowDialogの戻り値として取得する方法と、メソッドやプロパティを介して取得する方法が考えられます。
※ちなみに、この例ではpublic DialogResult ShowDialog(int parameter)とpublic string ShowDialog(int parameter)は引数が同じなため、共存できません。public partial class FindForm : Form { public FindForm() { InitializeComponent(); } public DialogResult ShowDialog(int parameter) { // parameterを使用した何らかの処理 // 画面を表示 return base.ShowDialog(); } internal string GetInputText() { // public DialogResult ShowDialog(int parameter)を使用した場合はこちら return textBox1.Text; } // ShowDialogの戻り値として受け取る場合はこちら public string ShowDialog(int parameter) { // parameterを使用した何らかの処理 // 画面を表示 base.ShowDialog(); return textBox1.Text; } }
- 回答としてマーク yasheeki 2010年2月6日 9:37