当子窗体还有任务在进行时不允许退出程序
VS2010
ChildForm:Form1
MDIForm:Form2
我的Form1在进行打印任务时,事件里面写了e.Cancel=true,直接关闭窗体是不可以关闭的
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (zt == true)
{
MessageBox.Show("打印任务还没有结束,禁止退出程序!", "正在进行打印BOM", MessageBoxButtons.OK, MessageBoxIcon.Error);
e.Cancel = true;
this.Visible = true;
}
}
当Form1在Form2中显示时,关闭Form2也是不允许关闭的
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
foreach (Form fr in this.MdiChildren)
{
if (!fr.IsDisposed)
{
fr.Close();
}
}
}
问题是下面:
当Form1.Visible=false;之后,关闭Form2时,调试发现不会执行Form1的Closing事件,程序仍然可以关闭,要怎么做不管Form1是否隐藏,都会执行Form1的Closing事件
------解决方案--------------------visible为false时候不能触发事件吧...换个思路呗,识别线程什么的
------解决方案--------------------..额,只是个建议,把打印的全部过程写在一个线程里,单开一个打印的线程
举个例子吧
thread thprint = new Thread(new ThreadStart(print)); print就是你的打印方法 thprint.start();
然后就能判断thprint对象有方法判断线程(打印)过程结没结束
百度下多线程吧,希望对你有帮助
------解决方案--------------------在公共类里加变量
public static List<string> IsClose=new List<string>();
在每个要执行的代码里IsClose.dd(this.Name);
完成时IsClose.Remove(this.Name);
关闭程序时判断IsClose的Clount=0就关闭,否则提示有任务未完成。