阻止窗口关闭的方法:
1. 使关闭按钮无效变灰
const int SC_CLOSE = 0xF060;
const int MF_BYCOMMAND = 0x0;
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr RemoveMenu(IntPtr menuHwnd, int position, int flags);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern IntPtr GetSystemMenu(IntPtr hwnd, int bRevert);
public static void EnableApplicationClose(System.Windows.Forms.Form form, bool val)
{
IntPtr menu = GetSystemMenu(form.Handle, val ? 1 : 0);
if (!val && menu != IntPtr.Zero)
RemoveMenu(menu, SC_CLOSE, MF_BYCOMMAND);
else
{
// needed when enabling the app close box to force it to redraw.
form.Enabled = false;
form.Enabled = true;
}
}
2. 重载onclosing事件处理函数
Code:
private void frmStopClose_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Close Form?", "Remind", MessageBoxButtons.YesNo) != DialogResult.Yes)
{
e.Cancel = true;
}
}
本文作者:网友 来源:博客园愚翁专栏
CIO之家 www.ciozj.com 微信公众号:imciow