none
Windows Forms から値を返す方法 RRS feed

回答

  • /// <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月6日 5:06
    モデレータ
  • 何通りかのやり方がありますが、
    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
    2010年2月6日 5:17

すべての返信

  • /// <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月6日 5:06
    モデレータ
  • 何通りかのやり方がありますが、
    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
    2010年2月6日 5:17