我在c#winforms应用程序(Visual Studio 2010,.net 4)中有一个带有后台工作器的窗体。当后台工作人员忙时,我想在尝试关闭表单并取消表单关闭时提醒用户。我想通过将表单关闭取消设置为true来在表单关闭事件中处理它。当后台工作正在进行时,无法停止窗体关闭
但它仍然关闭窗体!
这里是代码片段我用:
private void FormDrivenDistance_FormClosing(object sender, FormClosingEventArgs e)
{
if (myBackgroundWorker.IsBusy)
{
Messenger.ShowCriticalMessage("Don't close, in progress!");
e.Cancel = true;
}
}
哪里是错误?
在此先感谢!
是的,我相信,除此之外,一切正常,isbusy返回true。是的,事件正确地连接起来。 – Tom 2011-04-12 19:57:01
@Tamas当你在'e.Cancel = true;'上设置一个断点时会发生什么?并且遍历代码? – Davy8 2011-04-12 19:58:37
即使取消设置为true,它也会简单地关闭表单。总而言之,我发现了这个错误的原因:我使用开源的UI组件来创建像IDE这样的Visual Studio(http://www.codeproject.com/KB/toolbars/VS_IDE_Dock_Container.aspx),正如我现在看到的那样导致的问题,它使窗体关闭在后台一些技巧,并没有以正确的方式使用取消...伤心的消息,我需要这个组件,也取消...感谢您的帮助! – Tom 2011-04-12 20:09:14