我正在使用Windows窗体,我想向用户显示如果用户尝试关闭窗口或尝试在完成进程之前关闭应用程序(用户忘记完成过程),如果用户按下OK我想停止窗口关闭并让用户完成这个过程,我确实在网上找到了一些代码,但它在VB中不在c#
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason.Equals(CloseReason.WindowsShutDown))
{
Microsoft.VisualBasic.Interaction.Shell("shutdown -a", AppWinStyle.MinimizedFocus, false, -1);
MessageBox.Show("Shutdown process cancelled!");
}
}
答案 0 :(得分:5)
最好使用这段代码片段,根据您的要求使用e.Cancel
:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason.Equals(CloseReason.WindowsShutDown))
{
if (MessageBox.Show("You are closing this app.\n\nAre you sure you wish to exit ?", "Warning: Not Submitted", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop) == DialogResult.Yes)
return;
else
e.Cancel = true;
}
}
参考:SystemEvents.SessionEnding Event
在用户尝试注销或关闭系统时发生。