VB事件的执行顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VB事件的执行顺序相关的知识,希望对你有一定的参考价值。

MouseDown,MouseUp,Command1_Click 这三个事件的执行顺序是怎么样的?
谁先执行?
Dim SW As Boolean
Function func(X As Integer) As Integer
If X < 20 Then
Y = X
Else
Y = 20 + X
End If
func = Y
End Function

Private Sub Command1_Click()
Dim intNum As Integer
intNum = InputBox("")
If SW Then
Print func(intNum)
End If
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
SW = False
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
SW = True
End Sub
为什么这个程序结果是窗体无输出?

用下面类似的代码可以看到先后顺序
Private Sub Command1_Click()
Debug.Print "Command1_Click"
End Sub
Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print "Command1_MouseDown"
End Sub
Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print "Command1_MouseUp"
End Sub

-------------------------
下面的程序运行时SW的值初始是False,所以不会print。你先点击一下窗体,再点command1就会输出了
参考技术A 可用一个控件的 Value 属性从代码中测试该控件的状态。单击一个控件除了产生 Click 事件以外还可产生 MouseDown 和 MouseUp 事件。这三种事件发生的顺序根据控件的不同而不同。例如,对 ListBox 和 CommandButton 控件来说,这些事件按下列顺序发生:MouseDown、Click、MouseUp。但对 FileListBox,Label 或 PictureBox 控件来说,这些事件按下列顺序发生:MouseDown、MouseUp 和 Click。当给这些相关的事件附加事件过程时,要确保它们的操作不互相冲突。如果在应用程序中事件发生的顺序是重要的,则应对控件进行测试以确定事件的顺序。

补充:
Option Explicit
Dim SW As Boolean
Dim Y As Variant
Function func(X As Integer) As Integer
If X < 20 Then
Y = X
Else
Y = 20 + X
End If
func = Y
End Function

Private Sub Command1_Click()
Dim intNum As Integer
intNum = InputBox("")
If SW Then
Print func(intNum)
End If
SW = Not SW
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
SW = False
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
SW = True
End Sub

VB顺序文件案例:简易文本编辑器

文章目录

开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于VB事件的执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

Vb.net 多个线程执行顺序的问题

如何跟踪SQL SERVER 正在执行的语句

jquery中各个事件执行顺序如下:

关于js事件执行顺序

Unity3D事件函数的执行顺序

jquery中各个事件执行顺序如下: