【问题标题】:Closing a form and doing something on return to another form关闭一个表单并在返回另一个表单时做某事
【发布时间】:2010-04-19 21:22:40
【问题描述】:

我有一个 mainForm 和一个 saveForm。 我从不关闭 mainForm,只是让 saveForm 出现在顶部。

当我关闭 saveForm 时,我希望在返回 mainForm 时运行一段代码。

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

【问题讨论】:

    标签: c#


    【解决方案1】:

    除了@benPearce 的回答,如果您满足于 saveForm 以模态方式出现,那么您可以调用:

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

    private void btnSave_Click(object sender, EventArgs e)
    {
        saveForm sf = new SaveForm();
        if (sf.ShowDialog() == DialogResult.OK)
        {
            // do your thing
        }
    }
    

    当然,您必须确保 saveForm 正在设置 DialogResult。例如,假设您在 saveForm 中有一个 OK 按钮,该按钮应该关闭 saveForm... 在 OK 按钮的 Click 事件中,您可以这样做:

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

    【讨论】:

    • @Luke。您可以在 mainForm 中执行此操作。
    • 在方法内部?哪一个?只是对它的工作原理有点困惑?
    • 这真的很有帮助,但是当我单击保存按钮时,我不希望它执行代码。关闭 saveForm 后,我想让它做点什么。你提供的代码是这样做的吗?
    • @Luke。是的,代码完全符合您的要求,但前提是您希望 saveForm 是模态的。如果没有,那么您应该使用@benPearce 方法。另外,当你说你不想要一个保存按钮时......那么究竟是如何启动 saveForm 的呢?
    • 目前,我已经从 mainForm_load 加载了它,但我对此并不满意并且不会重新加载表单。我确实用一个按钮打开了 saveForm。我的想法是代码将在初始启动时发生,然后在我关闭 saveForm 时发生,但不使用 formload。我会试试你说的。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-31
      • 1970-01-01
      • 2014-08-27
      相关资源
      最近更新 更多