当前位置:  开发笔记 > 编程语言 > 正文

禁用Windows窗体上的退出按钮?

如何解决《禁用Windows窗体上的退出按钮?》经验,为你挑选了2个好方法。

有没有办法禁用Windows窗体上的退出按钮,而无需导入一些外部.dll?我通过使用以下代码导入dll来禁用退出按钮,但我不喜欢它.有更简单的(内置)方式吗?

    public Form1()
    {
        InitializeComponent();
        hMenu = GetSystemMenu(this.Handle, false);
    }

    private const uint SC_CLOSE = 0xf060;
    private const uint MF_GRAYED = 0x01;
    private IntPtr hMenu;

    [DllImport("user32.dll")]
    private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);

    [DllImport("user32.dll")]
    private static extern int EnableMenuItem(IntPtr hMenu, uint wIDEnableItem, uint wEnable);

    // handle the form's Paint and Resize events 

    private void Form1_Paint(object sender, PaintEventArgs e)
    {
        EnableMenuItem(hMenu, SC_CLOSE, MF_GRAYED);
    }

    private void Form1_Resize(object sender, EventArgs e)
    {
        EnableMenuItem(hMenu, SC_CLOSE, MF_GRAYED);
    }

Bevan.. 5

您无法轻松禁用退出按钮(右上角关闭表单的按钮).

但是,您可以通过将ControlBox属性设置为false来完全隐藏按钮.

ControlBox 可以随时打开和关闭,所以如果你想在某些时候动态允许关闭,而不是在其他时候,你可以使用它.

或者,您可以处理FormClosing事件并在您选择时取消关闭.

这是一个演示.

创建一个新的Windows窗体项目.

使用Text"ControlBox"删除表单上的CheckBox控件.将其Click事件连接到此:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    ControlBox = checkBox1.Checked;
}

然后,使用文本"取消关闭"在表单上删除第二个CheckBox控件.将表单的FormClosing事件连接到此:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = checkBox2.Checked;
}

运行应用程序并开始使用复选框.你很快就会看到事情是如何运作的.



1> Bevan..:

您无法轻松禁用退出按钮(右上角关闭表单的按钮).

但是,您可以通过将ControlBox属性设置为false来完全隐藏按钮.

ControlBox 可以随时打开和关闭,所以如果你想在某些时候动态允许关闭,而不是在其他时候,你可以使用它.

或者,您可以处理FormClosing事件并在您选择时取消关闭.

这是一个演示.

创建一个新的Windows窗体项目.

使用Text"ControlBox"删除表单上的CheckBox控件.将其Click事件连接到此:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
    ControlBox = checkBox1.Checked;
}

然后,使用文本"取消关闭"在表单上删除第二个CheckBox控件.将表单的FormClosing事件连接到此:

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    e.Cancel = checkBox2.Checked;
}

运行应用程序并开始使用复选框.你很快就会看到事情是如何运作的.



2> 小智..:

要禁用表单上的关闭按钮,只需在表单关闭事件上编写以下代码。

 private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        e.Cancel = true;
    }

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有