我在我的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