程序是这样的:
父窗体即主界面 子窗体为进度条
在父窗体定义一个线程指向“显示子窗体”的函数(该函数在子窗体中)
对硬件操作的耗时程序写在了子窗体里,操作完成后
将标识变量传递给父窗体,以便在父窗体中关闭线程
现在存在的问题是:
显示子窗体的线程开始后,主线程休眠0.5秒,在这0.5秒中父窗体还在前台
之后就看到父窗体标题头变灰
等子窗体自动关闭后弹出一个messagebox
点击确定关闭messagebox,父窗体就不见了
将所有打开的程序最小化 父窗体就躲在最后面
(整个过程父窗体还是在任务栏上能看到)
如何解决,求告解!
忙晕了,把问题搞错了
进度条不做什么事,只是用来告诉用户程序正在运行
耗时的程序在父窗体执行
进度条窗体的标识变量用于用户点击进度条上的“取消”按钮时,传回参数,中断硬件操作并关闭线程
其他问题就像前面说的一样
我对线程不怎么了解,之前只求达到效果,问题拖到现在必须解决了,不然老大会扁我。。。
ShowDialog 不要用 ,用show 子窗体属性 topmost =true
然后就是 弹出 子窗体用 异步线程
用控件 backgroundworker
仔细分析了一下,是关闭MessageBox后主窗体失去焦点
但点击进度条上的“取消”,强制中断扫描,也会弹出MessageBox,这时关闭MessageBox却是正常的
如果是用的ShowDialog的话,主窗体还是存在的,不能隐藏
frm.Show()
This.Hide()
这样的话主窗体是可以隐藏的,
当你的进度条结束后,在用FORM1.show再显示出来就可以了。
来源:英超直播