我使用后台工作人员完成一些任务,当后台工作人员成功完成时会出现一个消息框,我遇到的问题是如果我最小化我的表单并且当我点击表单时出现消息框消息框仍然出现除非我点击消息框,否则我会在底部的任务栏中看到它但是它被最小化了吗?
当用户点击任务栏中的表单然后显示带有表单的消息框时,是否可能?
目前我尝试在hte消息框之前添加以下内容,但消息框仍然显示为最小化。
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
问题是,如果我将屏幕保留在其他屏幕的顶部,那么它就会出现消息框,但是如果我将其最小化,如果我有其他窗口覆盖表单,则消息框保持最小化,除非我点击它任务栏。
我认为me.activate会帮助我,因为消息框只会出现在表单中。
答案 0 :(得分:2)
我使用您的代码制作了一个测试项目,我能够重现并解决问题。 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