消息框不显示窗体?

问题描述:

我使用背景工人成功地显示一个消息框,我的问题是,如果我尽量减少自己的状态,当我的消息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会帮助我,因为消息框只会出现在窗体中。

+0

重现问题的邮政编码。 – 2012-07-05 14:52:44

+0

的代码片段是值得的解释千言万语... – 2012-07-05 15:46:54

+0

嗨,大家好,增加了我的编码 – JackSparrow 2012-07-06 08:53:15

我做了使用代码中的测试项目,我能够重现和解决问题。 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 
+0

您好史蒂夫,是消息框出现在BGWorker运行工Completeted事件。但是我认为这个调用只在do work事件中需要? – JackSparrow 2012-07-05 15:37:12

+2

@JackSparrow是的,你是对的。如果你从'RunWorkerCompleted'事件显示它,那么你不需要调用'Invoke'。 RunWorkerCompleted事件是从UI线程引发的。正如汉斯所说,如果您可以发布一些代码来重现问题,那么这将会很有帮助。 – 2012-07-05 15:42:58

+0

嗨史蒂夫,我会编辑我的第一篇文章,包括我有的编码。 – JackSparrow 2012-07-06 08:46:31