Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从表格1刷新/重新加载到表格2_C#_Winforms - Fatal编程技术网

C# 从表格1刷新/重新加载到表格2

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

我的表格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();
    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");