当窗体重新出现时,自动运行函数C#

当窗体重新出现时,自动运行函数C#,c#,C#,我有两种获胜形式,f1和f2。当我单击f1上datagridview的行标题时,f1隐藏、f2显示和数据从f1传递到f2。现在,在用户操作f2并单击“关闭”后,f2隐藏并显示f1。我在f1中创建了一个函数来捕获用户对数据库所做的任何更改。问题是当f2隐藏和f1显示时,我如何自动调用此函数而不是使用按钮?谢谢。在表单的事件中有一个名为的事件显示出来。每次窗体重新出现时,此操作都将运行 我希望这有帮助 编辑: 请尝试以下方法: this.Hide(); f2.ShowDialog(); Metho

我有两种获胜形式,f1和f2。当我单击f1上datagridview的行标题时,f1隐藏、f2显示和数据从f1传递到f2。现在,在用户操作f2并单击“关闭”后,f2隐藏并显示f1。我在f1中创建了一个函数来捕获用户对数据库所做的任何更改。问题是当f2隐藏和f1显示时,我如何自动调用此函数而不是使用按钮?谢谢。

在表单的事件中有一个名为
的事件显示出来
。每次窗体重新出现时,此操作都将运行

我希望这有帮助

编辑:

请尝试以下方法:

this.Hide();
f2.ShowDialog();

MethodUpdateValues();
this.Show();
这将在第二行暂停,并在关闭f2时继续

问题是我如何自动调用这个函数,而不是使用 钮扣

然后在窗体构造函数或handle FormLoad event中调用该函数,并在事件处理程序中调用该函数。

在隐藏窗体1(f1)之前,在创建窗体2(f2)之后,将一个操作委托传递给f2,f2关闭时将调用该委托。此委托方法将位于类Form1中,并将重新激活隐藏实例

public class Form2: Form
{
    public Action ReactivateParent;

    .... form2 methods ....

    // Here I call the ReactivateParent inside the FormClosed event handler
    // of Form2, but these lines can also in a button click event 
    // that terminates the Form2 instance....
    protected void Form2_FormClosed(object sender, FormClosedEventArgs e)
    {
        if(ReactivateParent != null) 
           ReactivateParent();
    }
}
现在在Form1中,当您准备显示Form2实例时,请绑定操作委托

Form2 f2 = new Form2();
f2.ReactivateParent += ReactivateMe;
this.Hide
f2.Show();
...
并在Form1中添加一个名为ReactivateMe的方法

private void ReactivateMe()
{
    // Add here whatever you need to update your Form1 instance....
    ....
    // Reshow the now updated Form1 instance...
    this.Show();

}
这种方法的优点在于,Form2不关心在ReactivateParent中执行的操作,应用程序中的每个其他表单都可以重用Form2的功能,并在Form2实例关闭时收到通知


<> P>为了进一步改进此模式,您还可以考虑修改Action委托来接收自定义类的实例,该实例将由修改后的FUM2实例填充。这有助于避免调用数据库来更新Form1实例。

谢谢。我已经在展示的活动中进行了测试。当f1第一次出现时,显示的事件被触发,当f1再次出现且f2隐藏时,显示的事件不会再次触发。我所希望的正是在这一刻该功能被触发。谢谢,我刚刚看到你的更新。我测试了史蒂夫的解决方案,效果很好。@Viviannne很乐意帮忙。如果我的回答够好的话,你会考虑接受吗?到目前为止还没有被接受的答案,但是另一个人早些时候让你满意了。我看不出有什么理由-1这是正确的答案谢谢。f1首次出现时激发的加载事件,在它隐藏并重新出现后再次激发的加载事件?我不这么认为。也许还有别的事情。很高兴能帮上忙。