1

2 つのフォームがあり、次を使用して 2 番目のフォームを作成します。

Form2 f2 = new Form2();
f2.Show();

Form2public であり、すべての mousemove を変更する変数があります。そのフォームにボタンがあり、押すと変数が保存されます。問題は、それを に戻す方法がわからないことForm1です。

4

1 に答える 1

1

イベントを使用する必要があります。 Form2適切にトリガーされるイベントを定義する必要があります(ボタンがクリックされたときに発生するように聞こえます)。 Form1その後、そのイベントにサブスクライブして、何でもできます。

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();
    }

    public event Action<string> MyEvent; //TODO give better name and set arguments for the Action

    private void button1_Click(object sender, EventArgs e)
    {
        string someValue = "Hello World!";  //TODO get value that you want to share

        if (MyEvent != null)
        {
            MyEvent(someValue);
        }
    }
}

そして、あなたのメインフォームで:

private void button1_Click(object sender, EventArgs e)
{
    Form2 otherForm = new Form2();

    //subscribe to the event.  You could use a real method here, rather than an anonymous one, but I prefer doing it this way.
    otherForm.MyEvent += value =>
    {
        //do other stuff with "value".
        label1.Text = value;
    };

    otherForm.Show();
}
于 2012-11-01T17:17:36.533 に答える