刷新/重新加载从表单1到表单2

时间:2015-06-07 13:43:23

标签: c# winforms

private void Form1_Load(object sender, EventArgs e)
{
    f2 = new Form2();
    f2.Show();
}

我在Form1上有这个代码。这样会自动运行Form2_Load。当我单击Form1上的按钮时,是否可能。 Form2_Load将再次运行,无需关闭Form2。

1 个答案:

答案 0 :(得分:1)

回应你的评论:

  

单击Form1上的按钮时,它将向form2发送消息更新。 Form2中的文本框将显示消息。

(首先,这不是观察者模式。但是没关系,它不需要。)

首先,Form1需要保留对Form2实例的引用:

public class Form1
{
    private Form2 Form2Instance { get; set; }

    private void Form1_Load(object sender, EventArgs e)
    {
        Form2Instance = new Form2();
        Form2Instance.Show();
    }

    // the rest of your code
}

现在Form1上的其他代码可以引用该实例。这是因为您不想在任何时候发生任何变化时实际重新加载所有Form2。您只想"向form2"发送消息更新。

现在,Form2 将如何接收该消息?它可以暴露一种方法。像这样:

public class Form2
{
    public void Update(string newValue)
    {
        someTextBox.Text = newValue;
    }

    // the rest of the code
}

现在Form1上的代码可以在它引用的Form2实例上调用该方法。因此,当您点击Form1上的按钮时,您可能会这样做:

Form2Instance.Update("some value");

这将"发送消息"到Form2的实例。