从c#如何取消窗体关闭-看国内的一些书是如何误人子弟的
2012-03-18 17:41
423 查看
这次上的一门课,拿明日科技一般人出的一本c#案例书上的一个库存管理系统做例子。看到里面一段代码实在写得垃圾,佩服这些人是怎么敢出来写本书来教别人的,
所以尽信书不如无书,尤其是在国内这种出版环境下。。。。。
在看源代码时,发现是采用如下方法,让用户是否确认关闭窗口的:
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
if (MessageBox.Show("您真的要退出本系统吗?", "提示",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
Application.Exit();
}
else
{
frmMain fmain = new frmMain();
fmain.Show();
}
}
这段代码虽然能实现关闭窗口取消功能,当一个明显的问题是由于重复生成了主窗口,屏幕会闪动一下。
很显然,学过windows编程的都知道,一般是有窗体的关闭事件参数cancel,可以取消窗体关闭的。
我google了一下,果然,下面代码可以取消:
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("您真的要退出本系统吗?", "提示",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
Application.Exit();
}
else
e.Cancel = true;
}
在窗体关闭之前事件可以取消关闭。但这段代码在选择确定时,重复弹出了消息框,我想原因应该是应用的退出代码再次触发了closing事件。
因此,加入窗体成员:
Boolean closecancel=false;
然后下列代码应该算完善的:
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (!closecancel)
{
if (MessageBox.Show("您真的要退出本系统吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
closecancel = true;
Application.Exit();
}
else
e.Cancel = true;
}
}
当然本人平日读书也不多,编程水平也不高,如果代码有不足之处,欢迎拍砖。。。
所以尽信书不如无书,尤其是在国内这种出版环境下。。。。。
在看源代码时,发现是采用如下方法,让用户是否确认关闭窗口的:
private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
{
if (MessageBox.Show("您真的要退出本系统吗?", "提示",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
Application.Exit();
}
else
{
frmMain fmain = new frmMain();
fmain.Show();
}
}
这段代码虽然能实现关闭窗口取消功能,当一个明显的问题是由于重复生成了主窗口,屏幕会闪动一下。
很显然,学过windows编程的都知道,一般是有窗体的关闭事件参数cancel,可以取消窗体关闭的。
我google了一下,果然,下面代码可以取消:
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("您真的要退出本系统吗?", "提示",
MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
Application.Exit();
}
else
e.Cancel = true;
}
在窗体关闭之前事件可以取消关闭。但这段代码在选择确定时,重复弹出了消息框,我想原因应该是应用的退出代码再次触发了closing事件。
因此,加入窗体成员:
Boolean closecancel=false;
然后下列代码应该算完善的:
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
if (!closecancel)
{
if (MessageBox.Show("您真的要退出本系统吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) == DialogResult.OK)
{
closecancel = true;
Application.Exit();
}
else
e.Cancel = true;
}
}
当然本人平日读书也不多,编程水平也不高,如果代码有不足之处,欢迎拍砖。。。
相关文章推荐
- 在.net(C# or vb.net)中如何取消一个窗体的关闭
- 在.net(C# or vb.net)中如何取消一个窗体的关闭。
- C# WinForm开发 取消窗体关闭按钮
- C#中如何去除或屏蔽窗体默认的关闭按钮
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- 如何关闭父窗体?C#(已解决)
- C#.NET常见问题(FAQ)-如何捕捉窗体关闭的事件,弹窗确认是否退出
- C#开发WinForm窗体程序时,如何在子窗体中关闭窗口时并退出程序?
- C#.NET常见问题(FAQ)-如何捕捉窗体关闭的事件,弹窗确认是否退出
- C#中如何去除或屏蔽窗体默认的关闭按钮
- C# WinForm 如何实现窗体的关闭时温馨提示
- C#中如何设置窗体的默认按钮和取消按钮
- C# 如何窗体去掉上面的最大化,最小化合关闭以及实现无边框窗体拖动【申明:来源于网络】
- C#中如何去除窗体默认的关闭按钮
- C#中如何去除窗体默认的关闭按钮?[转自DIY部落]
- C# 打开子窗体(from2),如何关闭父窗体(from1)
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- C#中如何去除或屏蔽窗体默认的关闭按钮
- C#中如何去除或屏蔽窗体默认的关闭按钮?