none
如何把Form右上角的X给禁掉? RRS feed

  • 问题

  • 我想把把Form右上角的X给禁掉,但是发生了非常诡异的事情。

    Form1。 ControlBox = False 以后 X和最大最小化按钮都消失了。

    Form2。 ControlBox = False 以后 连窗口蓝色的标题都消失了。

    我现很想弄清楚:

    1。 这两种现象是否还牵扯到了其它属性的设置,所以才会造成显示结果的不同?

    2。能否单独禁止X而保留最大化和最小化按钮?

    谢谢


    信奎爷,无所畏惧!!
    2011年4月5日 9:43

答案

全部回复

  • controlbox 可以将按钮都取消了。

    不过无法达到你要的效果,你可以自己关闭所有按钮,自己画一个上去,现在很多个性化窗体控件都有类似功能。

    对于你这个需求,可以捕获form关闭事件,竟而达到不让点击叉叉的效果。

     


    family as water
    2011年4月5日 12:06
  •  OK, I 'll try OnClose Event . Thank you so much!


    信奎爷,无所畏惧!!
    2011年4月6日 2:05
  •  OK, I 'll try OnClose Event . Thank you so much!


    信奎爷,无所畏惧!!


    您好

    請在 Form.FormClosing 事件處理

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.form.formclosing(v=vs.80).aspx


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年4月6日 6:09
  • ControlBox 与 FormBorderStyle 需要配合使用的。详细可以参考 MSDN。如果要禁用 x 按钮而保持它显示在窗体上的话,在 QueryClose 的时候让 e.Cancel = false。详情可以参考 Windows 消息 WM_QUERYCLOSE。

    注意,禁用 x 按钮会同时禁用 System Menu 上的 Close 和 Alt+F4,请慎重。


    Mark Zhou
    2011年4月6日 9:05
  • ControlBox 与 FormBorderStyle 需要配合使用的。详细可以参考 MSDN。如果要禁用 x 按钮而保持它显示在窗体上的话,在 QueryClose 的时候让 e.Cancel = false。详情可以参考 Windows 消息 WM_QUERYCLOSE。

    注意,禁用 x 按钮会同时禁用 System Menu 上的 Close 和 Alt+F4,请慎重。


    Mark Zhou
    我设置的实际上是MDI 框架中的一个child Form .
    如果我这样设置的话是否会影响 MDI MainFrame 的 close 或 X呢? 谢谢
    信奎爷,无所畏惧!!
    2011年4月6日 9:13
  • MDI 是另外一种形式了,我没有试过,但感觉不会影响。因为那个禁用 x 的消息好像只是针对 Top Window。具体您可以去做实验。
    Mark Zhou
    2011年4月7日 8:19