表单激活事件和消息框会导致不必要的循环



我在我的vb.net应用程序中使用了一个激活的事件,后面跟着一个if语句,它会导致一个消息框作为条件的结果出现。。

问题是,消息框会导致我的表单失去焦点,然后每次单击消息框时都会重新激活,导致出现一种循环,我现在陷入了这种循环中,我该如何绕过它?

      Private Sub form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
    if "EXTERNAL DOCUMENT IS A DRAWING ENVIRONMENT" then
    'NOTHING
    Else
    msgbox("Select drawing environmet first")
me.close()
    end if
    end sub

行"EXTERNAL DOCUMENT IS A DRAWING ENVIRONMENT"是一个过程,其中autodesk inverter返回的变量结果确定了激活文档的图形环境类型。。。(这只是缩短了整个解释)

您可以使用Malcor所说的标志,也可以在显示Msg之前删除处理程序,因此:

Private Sub form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
  if "EXTERNAL DOCUMENT IS A DRAWING ENVIRONMENT" then
    'NOTHING
  Else
    RemoveHandler Me.Activated, addressof form1_Activated
    msgbox("Select drawing environment first")
    me.close()
  end if
end sub

未测试。但这可能会奏效。。。。

Private WarningShowed As Boolean = False
Private Sub form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
    If Not WarningShowed Then
        WarningShowed = True
        If "EXTERNAL DOCUMENT IS A DRAWING ENVIRONMENT" Then
            'NOTHING
        Else
            MsgBox("Select drawing environmet first")
            Me.Close()
        End If
    End If
End Sub

最新更新