到“ CanRaiseEvent”属性的引用链接:https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.control.canraiseevents?view=netframework-4.8#System_Windows_Forms_Control_CanRaiseEvents
鉴于VB6中的事件是递归的,所以我想在事件处理程序子菜单中禁用给定的控件事件。
例如,当前,如果在TextBox更改事件中TextBox的内容被更改(例如,测试),则将触发另一个事件,导致当前事件的状态被堆叠,并且TextBox更改事件将被调用再次。我可以防止事件使用简单的“ If”重复代码(例如,如果Text1.Text =“ test”然后退出Sub)。这将立即退出第二个事件并返回第一个事件的状态以继续处理。但是,我希望在输入初始事件时禁用TextBox事件。看来,参考链接中引用的属性可以完成此操作,但是VB6无法识别它。
使用VB6中的“ CanRaiseEvent”属性是否需要先声明?
感谢X
答案 0 :(得分:2)
完成此操作的典型方法是使用height:100vh
变量:
Static ... Boolean
答案 1 :(得分:0)
您可以像这样进行操作,但是这样做可能不值得。 (顺便说一下,我在这台PC上没有VB6 IDE,因此将取消语法检查,但这应该可以让您入门。
在表单中(对于本示例,您要关心的文本框是txtFirstName):
Private WithEvents mFirstNameEventListener As Textbox
Private Sub mFirstNameEventListener_TextChanged() 'or whatever the event is called in VB6
DisableEvents
'do work here, like forcing to upper-case etc
EnableEvents
End Sub
Sub Form_Load()
EnableEvents
End Sub
Sub Form_Unload()
DisableEvents
End Sub
Private Sub EnableEvents()
Set mFirstNameEventListener = txtFirstName
End Sub
Private Sub DisableEvents()
Set mFirstNameEventListener = Nothing
End Sub
还请注意,您也不会使用标准的VB6存根事件处理程序。你只会这样做。 (否则,两个事件处理程序都会被调用)