C# 从表格1刷新/重新加载到表格2
我的表格1上有密码。这样将自动运行C# 从表格1刷新/重新加载到表格2,c#,winforms,C#,Winforms,我的表格1上有密码。这样将自动运行Form2\u Load。当我点击表单1上的一个按钮时,是否有可能Form2\u Load将再次运行,而无需关闭Form2。回应您的评论: 单击Form1上的按钮时,它将向form2发送消息更新。Form2中的文本框将显示该消息 (首先,这不是观察者模式。但没关系,不需要这样。) 首先,Form1需要保留对Form2实例的引用: private void Form1_Load(object sender, EventArgs e) { f2 = new
Form2\u Load
。当我点击表单1上的一个按钮时,是否有可能Form2\u Load将再次运行,而无需关闭Form2。回应您的评论:
单击Form1上的按钮时,它将向form2发送消息更新。Form2中的文本框将显示该消息
(首先,这不是观察者模式。但没关系,不需要这样。)
首先,Form1
需要保留对Form2
实例的引用:
private void Form1_Load(object sender, EventArgs e)
{
f2 = new Form2();
f2.Show();
}
现在Form1
上的其他代码可以引用该实例。这是因为您不希望在任何时候发生更改时实际重新加载所有Form2
。您只想“向form2发送消息更新”
现在,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
实例上调用该方法。因此,当您单击表单1
上的按钮时,您可能会执行以下操作:
public class Form2
{
public void Update(string newValue)
{
someTextBox.Text = newValue;
}
// the rest of the code
}
这将“发送一条消息”到Form2
的实例,您实际上想要完成什么Form2\u Load
仅在Form2
加载时运行。因此,您需要打开一个新的Form2
实例,您可以使用所显示的确切代码执行此操作。如果代码值得运行,请将其放入一个具有良好名称的函数中,您可以随时调用该函数。用任意数量的逻辑对事件进行编码都是不好的。@David谢谢你。很抱歉我还是个新手。我试图使用观察者模式。从表格一到表格二。表2为观察员。单击Form1上的按钮时,它将向form2发送消息更新。表格2中的文本框将显示此消息。非常感谢您,先生!现在我明白了。
Form2Instance.Update("some value");