.net Messagebox是否与表单一起显示?
我使用后台工作人员执行一些任务,当后台工作人员成功完成时,会出现一个消息框,我的问题是,如果我最小化我的表单,并且当我单击表单时出现消息框,消息框仍然显示为模拟,除非我单击消息框-我可以在底部的任务栏中看到它,但它已最小化 当用户单击任务栏中的表单时,是否可能出现与表单一起出现的消息框 目前,我已经尝试在messagebox之前添加以下内容,但是messagebox似乎仍然最小化.net Messagebox是否与表单一起显示?,.net,vb.net,vb.net-2010,.net,Vb.net,Vb.net 2010,我使用后台工作人员执行一些任务,当后台工作人员成功完成时,会出现一个消息框,我的问题是,如果我最小化我的表单,并且当我单击表单时出现消息框,消息框仍然显示为模拟,除非我单击消息框-我可以在底部的任务栏中看到它,但它已最小化 当用户单击任务栏中的表单时,是否可能出现与表单一起出现的消息框 目前,我已经尝试在messagebox之前添加以下内容,但是messagebox似乎仍然最小化 me.activate 更新 很抱歉没有添加编码,我认为这是基本的编码,没有关系,但在这里 Private Sub
me.activate
更新
很抱歉没有添加编码,我认为这是基本的编码,没有关系,但在这里
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
问题是,如果我将屏幕放在其他屏幕的顶部,则消息框很好。但是,如果它的ir最小化,如果我有其他窗口覆盖表单,则消息框将保持最小化,除非我在任务栏中单击它
我认为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
发布重现问题的代码。一段代码就值得千言万语的解释……大家好,我添加了我的代码Hello Steve,是的,消息框出现在BGWorker运行Worker Completeted事件中。但是我认为只有在do work事件中才需要调用?@JackSparrow是的,你是对的。如果是从
RunWorkerCompleted
事件中显示它,则不需要调用Invoke
。从UI线程引发RunWorkerCompleted
事件。正如Hans所说,如果你能发布一个复制问题的代码的简化示例,那将是非常有帮助的。嗨,Steve,我将编辑我的第一篇文章,包括我的代码。