Der*_*k W 15
右键单击相关窗口,然后单击"属性".在Properties下单击Events.双击该FormClosing
事件.
Windows窗体设计器将生成以下代码:
private void myWindow_FormClosing(object sender, FormClosingEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
只需将代码更新为这样(添加e.Cancel = true;
):
private void myWindow_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)
你完成了!
或者,如果要禁用窗口的关闭,最大化和最小化按钮:
您可以右键单击相关窗口,然后单击"属性".在"属性"下,将属性设置ControlBox
为false
.
dsg*_*fin 10
您处理表单的Closing事件(而不是Closed事件).
然后使用e.CloseReason来决定是否确实要阻止它(UserClose)(TaskManager Close).
此外,在codeproject 上的表单上有一个小例子禁用关闭按钮.
如果您正在使用MDI子窗口并且在创建窗口期间禁用关闭按钮被排除(即您希望在窗体生命期间的某些时间禁用它),以前提出的解决方案都不会起作用¹.
相反,我们必须使用以下代码:
[DllImport("user32")]
public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("user32")]
public static extern bool EnableMenuItem(IntPtr hMenu, uint itemId, uint uEnable);
public static void DisableCloseButton(this Form form)
{
// The 1 parameter means to gray out. 0xF060 is SC_CLOSE.
EnableMenuItem(GetSystemMenu(form.Handle, false), 0xF060, 1);
}
public static void EnableCloseButton(this Form form)
{
// The zero parameter means to enable. 0xF060 is SC_CLOSE.
EnableMenuItem(GetSystemMenu(form.Handle, false), 0xF060, 0);
}
Run Code Online (Sandbox Code Playgroud)
¹ ControlBox = false
如果您不想要任何按钮,可以设置,但这不是问题所在.
你应该覆盖CreateParams
派生的函数System.Windows.Forms.Form
并改变班级风格
myCp.ClassStyle = 0x200;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
53413 次 |
最近记录: |