C#表单关闭事件
本文关键字:事件 表单 | 更新日期: 2023-09-27 18:01:04
我是一名刚开始上学的程序员,我们必须做一个大项目,我的一个表单关闭时遇到了问题,特别是一个自己制作的表单"关闭事件"。
private void sluitenToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Het programma wordt hiermee gesloten.'nBent u zeker dat u wilt sluiten en uitloggen?",
"Waarschuwing , u staat op het moment het programma te sluiten",MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation) == DialogResult.Yes)
{
Application.Exit();
}
}
private void window_Closing(object sender, FormClosingEventArgs e)
{
if(MessageBox.Show("Bent u zeker dat u wilt uitloggen?","Waarschuwing , u staat op het moment uit te loggen",
MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
{
loginForm.Show();
}
else
{
e.Cancel = true;
}
现在我的问题是,当我使用sluitnToolStripMenuItem_Click并按下yes按钮时,它将关闭我的应用程序,从而触发window_Closing事件。但我只希望window_Closing事件发生在我的用户单击右上角的红色大X时,而不是在用户单击我的toolstrip项目时。提前感谢
此外,如果有人对制作一个好的GUI有任何建议,那就太好了;((我来自比利时,很抱歉我的代码中有荷兰人(
您可以保留一个变量来存储生成事件的状态。
bool ClosedFromMenu = false;
private void sluitenToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Het programma wordt hiermee gesloten.'nBent u zeker dat u wilt sluiten en uitloggen?",
"Waarschuwing , u staat op het moment het programma te sluiten",MessageBoxButtons.YesNo,
MessageBoxIcon.Exclamation) == DialogResult.Yes)
{
ClosedFromMenu = true;
Application.Exit();
}
}
private void window_Closing(object sender, FormClosingEventArgs e)
{
if(!ClosedFromMenu)
{
if(MessageBox.Show("Bent u zeker dat u wilt uitloggen?","Waarschuwing , u staat op het moment uit te loggen",
MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes)
{
loginForm.Show();
}
else
{
e.Cancel = true;
}
}
}
在FormClosing
事件中,您可以检查sender
或e.CloseReason
。
例如,FormClosing
事件处理程序中的以下代码:
if (e.CloseReason != CloseReason.UserClosing)
{
//......
}
如果按下Alt+F4
或单击[X]
按钮,将不会执行。
http://msdn.microsoft.com/en-us/library/system.windows.forms.closereason%28v=vs.110%29.aspx