繁体   English   中英

如何限制用户关闭Winform c#

[英]How to restrict user from closing the Winform c#

我知道这是一个非常简单的问题,但我正在寻找干净整洁的建议。 我的应用程序是一个MDI应用程序。 创建了一个在整个应用程序中使用的基本表单。 有几种形式我们不希望用户关闭,以避免人为错误,我们计划不允许用户关闭这些形式。

我试图在表单结束事件中设置e.cancel = true ,但似乎它不起作用可以有人给我一些建议吗?

编辑:

Private void FrmTask_FormClosing(object sender, FormClosingEventArgs e)
        {         
                e.Cancel = true;
        }

问题是,当我使用此代码时,我的MDI应用程序中的表单都没有关闭,甚至是主MDI父表单。

您也可能无法显示关闭按钮:

http://blogs.msdn.com/b/atosah/archive/2007/05/18/disable-close-x-button-in-winforms-using-c.aspx

Cody Gray在评论中提供了更好的链接,也禁止Alt-F4关闭:

https://stackoverflow.com/a/4655948/366904

据推测,这里的问题是您希望窗口在应用程序存在时关闭,但如果用户尝试手动关闭窗口则不需要关闭窗口。

要做到这一点,你必须有一个手动覆盖,比如一个名为allowShutdown定义的变量,并且有一个方法可以在MdiParent关闭时设置它。

private void Form_Closing(object sender, EventArgs e)
{
  if( !allowShutdown) e.Cancel = true;
}

public void ForceShutdown()
{
  allowShutdown = true;
  Close();
}

然后在您的父表单中:

private void Form_Closing(object sender, EventArgs e)
{
  if( childForm != null ) childForm.ForceShutdown();
}

这假设您在创建父表单时保留对子表单的引用。 将此与隐藏其他帖子中提到的关闭按钮的功能相结合,您应该有一个可行的解决方案。

我怀疑FormClosingEventArgs.CloseReason会给你足够的信息来确定是否有条件地取消关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM