消息框不显示表单?

时间:2012-07-05 14:50:30

标签: .net vb.net vb.net-2010

我使用后台工作人员完成一些任务,当后台工作人员成功完成时会出现一个消息框,我遇到的问题是如果我最小化我的表单并且当我点击表单时出现消息框消息框仍然出现除非我点击消息框,否则我会在底部的任务栏中看到它但是它被最小化了吗?

当用户点击任务栏中的表单然后显示带有表单的消息框时,是否可能?

目前我尝试在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会帮助我,因为消息框只会出现在表单中。

1 个答案:

答案 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