禁止用户关掉对话框的方法
1.应用场景
- 在实际项目中可能会遇到这样的情况,我们不希望使用者关掉某个对话框,那么我们应该如何做呢?下面提供两种思路:
- 不显示最大最小和关闭按钮:如果对话框中没有关闭按钮,那么用户就无法关闭对话框了,除非在任务管理器中关闭;
- 重载窗口关闭按钮:重写关闭按钮方法,将退出屏蔽,写成你想要的效果。
2. 不显示最大最小和关闭按钮
这种方法非常简单粗暴,只需要在构造函数中写一句代码即可:
using System.Windows.Forms;
namespace non_visible_FormButtonClose
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.ControlBox = false; //不显示最大最小和关闭按钮
}
}
}
3. 重载窗口关闭按钮方法
这个方法更灵活一些:
using System.Windows.Forms;
namespace overrideWndProc
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
#region 重载窗口关闭按钮
protected override void WndProc(ref Message m)
{
const int WM_SYSCOMMAND = 0x0112;
const int SC_CLOSE = 0xF060;
if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE)
{
//捕捉关闭窗体消息
//System.Environment.Exit(0);//彻底退出所有线程
//this.Hide();
MessageBox.Show("这里是重载窗口关闭按钮");
return;
}
base.WndProc(ref m);
}
#endregion
}
}
4. 代码下载地址
https://download.csdn.net/download/weixin_38566632/19995025?spm=1001.2014.3001.5503