private void Form1_Load(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
我在Form1上有这个代码。这样会自动运行Form2_Load
。当我单击Form1上的按钮时,是否可能。 Form2_Load
将再次运行,无需关闭Form2。
答案 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
的实例。