【问题标题】:How to prevent closing of a HIDDEN form in C#如何防止在 C# 中关闭隐藏表单
【发布时间】:2011-03-21 09:52:12
【问题描述】:

我想防止在某些情况下关闭表单。我知道 OnFormClosing 的用法, 但是当窗体被隐藏时(Visible==false),不会调用 OnFormClosing 方法。 在这种情况下有没有办法拦截表单关闭?

编辑(更多细节): 该窗体是 MdiParent 中的子窗体,应在后台保持不可见并等待来自另一个线程的调用(通过 Invoke)。

当用户“断开连接”时,MdiParent 会关闭所有子窗口,在这种情况下,上面的表单应该保持打开状态,但不可见并仍在等待调用。 当 MidParent 本身关闭时,所有表单都应关闭。

Edit2(没有解决方案?): 似乎没有解决办法。我现在的解决方法是在 MdiParent 代码中排除我的非关闭表单,这会关闭所有其他表单。

【问题讨论】:

  • 如果隐藏了,用户如何关闭它?还是您的意思是类似任务管理器的应用程序?
  • 如果它被隐藏,是什么导致它关闭?必须有一些与关闭相关的其他操作,您可以明确地调用表单的某些功能来完成您需要做的事情。否则,您应该提供有关该问题的更多信息。
  • 如何以及是什么导致隐藏表单关闭?请发布一些详细信息

标签: c# formclosing


【解决方案1】:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
                // This will cancel the event
                e.Cancel = true;
}

无论出于何种原因,这都会有效地阻止表单关闭。

【讨论】:

  • 这是我首先尝试的,只要表单可见,它就可以工作。但是在Form.Visible=false 之后调用的最后一个方法是 OnHandleDestroyed。
  • 如何关闭 MdiChildren?
  • 我用 frmChild.Close() 在 MdiParent-Form 中关闭它。我上传了一个最小的示例项目here。当子窗体可见时,不可能关闭。当子窗体被隐藏时,它(和 MdiParent)可以被关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-20
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多