2015-05-10 35 views
0

我正在寻找一种方法(告诉/检查)如果(错误/警告)MessageBox仍然在另一个函数的运行中打开。什么我问一个例子是:Timer.Tick函数中重复的消息框

Imports System.Windows.Forms 
Class MainWindow 
    Dim t As Timer = New Timer 

    Public Sub load() Handles Me.Loaded 
     t.Interval = 60000 

     AddHandler t.Tick, AddressOf tick 

     t.Start() 
    End Sub 

    Public Sub tick() 
     ' if message is not open 
     MessageBox.Show("Example Error Message", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     ' end if 
    End Sub 
End Class 

时被触发Tick事件的if语句检查窗口开启,如果不是,那么它显示的信息,如果它确实指出

+1

不是'MessageBox.Show'总是显示一个_modal_对话框吗?你永远不会有多于一个。 –

+0

在这个例子中,我正在使用tick函数中的messagebox创建“Duplicates”,每当计时器滴答时自动显示相同的消息 – JoshuaJohnson2896

+0

我的不好。忘记它发生在计时器内。但是这似乎是一个非常糟糕的主意,因为在UI中可以做任何事情之前必须关闭消息框。 –

回答

3

我会做这样的事情;

首先声明一个全局布尔变量 - 类似于showError并将其初始化为True。

之后我会声明一个全局MsgBoxResult变量。在这种情况下,我把它称为x。然后我会使用这个代码。

Public Sub tick() 
    If showError = True then 
     showError = False 

     x = MessageBox.Show("Example Error Message", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error) 

     If x = MsgBoxResult.Ok Then 
      showError = True 
     End If 

    End If 
End Sub 

最终的if语句基本上检查MessageBox是否返回结果。这将始终是错误的,直到用户单击确定。现在因为MessageBox只有一个按钮(ok),所以这个if语句总是返回True,并将showError设置为True,并因此使MessageBox再次出现。

+0

为了事件触发,你不需要将showError初始化为true。编辑︰我改变showError为真后,它的工作,谢谢 – JoshuaJohnson2896

+0

哦,对不起,现在它改变了。别客气 – Jordan