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

Duplicate Messagebox in Timer.Tick Function

我正在寻找一种方法来(告诉/检查)一个(错误/警告)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 语句检查 window 是否打开,如果没有打开则显示消息,如果打开则不显示

我会做这样的事情;

首先声明一个全局布尔变量——类似于 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 是否有 returned 结果。这将始终为假,直到用户单击“确定”。现在因为 MessageBox 只有一个按钮(确定),这个 if 语句将始终 return True,将 showError 设置回 True,从而使 MessageBox 再次出现。