消息框不显示窗体?
我使用背景工人成功地显示一个消息框,我的问题是,如果我尽量减少自己的状态,当我的消息boxstill似乎是在窗体上单击显示消息框做了一些工作,当后台工作完成miminized,除非我点击消息框 - 我可以看到它在底部的任务栏,但其最小化?消息框不显示窗体?
当用户单击任务栏中的表单时,是否可以使用表单显示消息框?
目前我已经尝试在使用消息框之前添加以下内容,但是该消息框仍显示为最小化。
me.activate
更新
对不起,不添加编码,我以为这是基本的编码它wouldnt重要,但在这里它是....
Private Sub BGWorker_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BGWorker.DoWork
If Not worker.CancellationPending Then
‘ Do code
If worker.CancellationPending Then
e.Cancel = True
‘ Do Code
Exit Sub
End If
End If
End Sub
Private Sub BGWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BGWorker.RunWorkerCompleted
Me.Activate()
If e.Cancelled Then
Messagebox.show(“Cancelled”)
Else
Messagebox.show(“Successful”)
End If
End Sub
的问题是,如果我离开我的屏幕在其他屏幕的顶部,然后它的罚款消息框出现然而,如果它最小化如果我有其他窗口覆盖窗体然后消息框保持最小化,除非我在任务栏上单击它。
我以为me.activate会帮助我,因为消息框只会出现在窗体中。
我做了使用代码中的测试项目,我能够重现和解决问题。 Activate
方法不会使表单最小化。要做到这一点,您需要设置WindowState
属性。试试这个:
Private Sub BGWorker_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BGWorker.RunWorkerCompleted
Me.WindowState = FormWindowState.Normal ' Add this line
Me.Activate()
If e.Cancelled Then
Messagebox.show(“Cancelled”)
Else
Messagebox.show(“Successful”)
End If
End Sub
您好史蒂夫,是消息框出现在BGWorker运行工Completeted事件。但是我认为这个调用只在do work事件中需要? – JackSparrow 2012-07-05 15:37:12
@JackSparrow是的,你是对的。如果你从'RunWorkerCompleted'事件显示它,那么你不需要调用'Invoke'。 RunWorkerCompleted事件是从UI线程引发的。正如汉斯所说,如果您可以发布一些代码来重现问题,那么这将会很有帮助。 – 2012-07-05 15:42:58
嗨史蒂夫,我会编辑我的第一篇文章,包括我有的编码。 – JackSparrow 2012-07-06 08:46:31
重现问题的邮政编码。 – 2012-07-05 14:52:44
的代码片段是值得的解释千言万语... – 2012-07-05 15:46:54
嗨,大家好,增加了我的编码 – JackSparrow 2012-07-06 08:53:15