【问题标题】:Form Activated event and messagebox causes unwanted looping表单激活事件和消息框导致不需要的循环
【发布时间】:2016-09-05 07:10:15
【问题描述】:

我在我的 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 发明者返回的可变结果确定什么类型的绘图环境是活动文档...(这只是缩短了整个解释)

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    未测试。但这可能有效....

    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
    

    【讨论】:

    • 是的,tops 不得不尝试一下,但似乎可以解决问题!谢谢!!!!!!
    【解决方案2】:

    您可以像 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      • 2017-12-24
      相关资源
      最近更新 更多