C# 关闭一个表单并在返回到另一个表单时执行某些操作

C# 关闭一个表单并在返回到另一个表单时执行某些操作,c#,C#,我有一个主窗体和一个存储窗体。 我从不关闭主窗体,只是让保存窗体显示在顶部 当我关闭存储表单时,我希望在返回mainForm时运行一段代码 实现这一点的最佳方法是什么?在mainForm中,订阅saveForm上的FormClosed事件,将代码放入此事件的事件处理程序中 void saveForm_FormClosed(object sender, FormClosedEventArgs e) { /// code here } 在mainForm中,订阅saveForm上的Form

我有一个主窗体和一个存储窗体。 我从不关闭主窗体,只是让保存窗体显示在顶部

当我关闭存储表单时,我希望在返回mainForm时运行一段代码


实现这一点的最佳方法是什么?

在mainForm中,订阅saveForm上的FormClosed事件,将代码放入此事件的事件处理程序中

void saveForm_FormClosed(object sender, FormClosedEventArgs e)
{
    /// code here
}

在mainForm中,订阅saveForm上的FormClosed事件,将代码放入此事件的事件处理程序中

void saveForm_FormClosed(object sender, FormClosedEventArgs e)
{
    /// code here
}

除了@benPearce的回答之外,如果您满足于以模式显示saveForm,那么您可以拨打:

所以在
main表单
中,我假设您有一个保存按钮(我们称之为
btnSave
),它会显示
保存表单
,对吗?正当因此,双击该保存按钮,VisualStudio将为您创建一个事件处理程序。输入下面的代码

private void btnSave_Click(object sender, EventArgs e)
{
    saveForm sf = new SaveForm();
    if (sf.ShowDialog() == DialogResult.OK)
    {
        // do your thing
    }
}
当然,您必须确保保存表单正在设置DialogResult。例如,假设您在
saveForm
中有一个OK按钮,用来关闭
saveForm
。。。在OK按钮的Click事件中,您可以执行以下操作:

private void btnOK_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;
    this.Close();
}

除了@benPearce的回答之外,如果您满足于以模式显示saveForm,那么您可以拨打:

所以在
main表单
中,我假设您有一个保存按钮(我们称之为
btnSave
),它会显示
保存表单
,对吗?正当因此,双击该保存按钮,VisualStudio将为您创建一个事件处理程序。输入下面的代码

private void btnSave_Click(object sender, EventArgs e)
{
    saveForm sf = new SaveForm();
    if (sf.ShowDialog() == DialogResult.OK)
    {
        // do your thing
    }
}
当然,您必须确保保存表单正在设置DialogResult。例如,假设您在
saveForm
中有一个OK按钮,用来关闭
saveForm
。。。在OK按钮的Click事件中,您可以执行以下操作:

private void btnOK_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;
    this.Close();
}

@卢克。您可以在main表单中执行此操作。在方法内部?哪一个?只是对它的工作原理有点困惑?这真的很有帮助,但我不想让它在单击“保存”按钮时执行代码。关闭存储表单后,我希望它做一些事情。是你提供的代码吗?@Luke。是的,代码完全符合您的要求,但前提是您希望您的存储表单是模态的。如果没有,那么你应该采用@benPearce方法。另外,当你说你不想要一个保存按钮时……那么你到底是如何启动保存表单的呢?目前,我已经从mainForm_load加载了它,但我对此不满意,也不会重新加载表单。我确实用一个按钮打开了存储表单。我的想法是,代码将在初始启动时发生,然后在关闭存储表单时发生,但不使用formload。“我会试试你说的。”卢克。您可以在main表单中执行此操作。在方法内部?哪一个?只是对它的工作原理有点困惑?这真的很有帮助,但我不想让它在单击“保存”按钮时执行代码。关闭存储表单后,我希望它做一些事情。是你提供的代码吗?@Luke。是的,代码完全符合您的要求,但前提是您希望您的存储表单是模态的。如果没有,那么你应该采用@benPearce方法。另外,当你说你不想要一个保存按钮时……那么你到底是如何启动保存表单的呢?目前,我已经从mainForm_load加载了它,但我对此不满意,也不会重新加载表单。我确实用一个按钮打开了存储表单。我的想法是,代码将在初始启动时发生,然后在关闭存储表单时发生,但不使用formload。我会试试你说的。