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

本文关键字:表单 重载 刷新 | 更新日期: 2023-09-27 17:54:08

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

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

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

回复你的评论:

当点击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的实例"发送消息"