1

Windowsフォームアプリケーションを使用してからしばらく経ちました。メインフォームにチェックボックスがあり、特定の条件に基づいて、ユーザーに追加データを要求するために2番目のフォームを開く必要がある場合、2番目のフォームからメインフォームにメッセージを返す(または受け取る)にはどうすればよいですか?チェックボックスをオンまたはオフにしてもよいかどうかを確認できるようにフォームを作成しますか?

私が覚えていることから、私はPassbyのようなものを使うことができましたref。それとも、これを達成するためのより良い方法はありますか?

4

2 に答える 2

3

子フォームをダイアログとして表示していて、親フォームはフォームが閉じられるまでそれを必要としないため、必要なのは、子フォームにパブリックゲッターとプライベートセッターを持つプロパティを追加し、値を設定することだけです。必要に応じて子フォームで、を呼び出した後にメインフォームから値を読み取りますShowDialog

于 2012-10-19T14:29:37.053 に答える
1

これを行う1つの方法は、イベントを使用することです。

子フォームで、特定のユーザーインタラクション時に発生するイベントを宣言し、メインフォームでこのイベントを「サブスクライブ」します。

インスタンス化して子フォームと呼ぶときは、次のようにします。

private void button1_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    frm.MyEvent += frm_MyEvent;
    frm.ShowDialog();
    frm.MyEvent -= frm_MyEvent;
}

private void frm_MyEvent(object sender, EventArgs e)
{
    textBox1.Text = "whatever"; //just for demo purposes
}

子フォームで、イベントを宣言して発生させます。

public event EventHandler MyEvent;

private void button1_Click(object sender, EventArgs e)
{
    if (MyEvent!= null)
        MyEvent(this, EventArgs.Empty);
}

お役に立てれば

于 2012-10-19T15:11:25.220 に答える