0

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

当用户单击任务栏中的表单然后消息框与表单一起出现时,是否有可能?

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

4

1 回答 1

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
于 2012-07-05T15:09:14.160 回答