Timer.Tick函数中的重复消息框

时间:2015-05-10 16:21:20

标签: vb.net function timer messagebox duplicate-removal

我正在寻找一种方法(告诉/检查)一个(错误/警告)MessageBox是否仍在另一个函数运行中打开。我要问的一个例子是:

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

答案 0 :(得分: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是否返回了结果。在用户单击“确定”之前,这将始终为false。现在因为MessageBox只有一个按钮(ok),这个if语句将始终返回True,将showError设置回True,从而再次显示MessageBox。