重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
显示图案和播放音频之间加个延时代码。
创新互联公司主营罗源网站建设的网络公司,主营网站建设方案,App定制开发,罗源h5成都微信小程序搭建,罗源网站营销推广欢迎罗源等地区企业咨询
延时代码可以使用Windows API函数Sleep
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
'显示图案代码
Sleep 1000 '延时1秒
'播放音频代码
End Sub
keypress:操作窗格具有焦点并按下某个键时发生,不能由非字符键引发
keydown:按下键盘按键时发生
keyup:键盘按键弹起时发生
以上事件触发的时间不同,顺序 down press up
keychar:按键对应的字符
keycode:获取 KeyDown 或 KeyUp 事件的键盘代码
char不能获取 控制键如tab Insert delete 方向键等
这个执行顺序由.net内部处理和维护
现在我测试了下,如果动态添加delegate的话,那么事件调用就会按照添加的先后顺序来执行
不过在过程里直接用"handles 某个事件"来指定的话,顺序就不一定了,比如我测试你的代码就是3,1,2的循序,和处理过程的名字应该没什么关系
不过事件的处理过程会按照在invocation list里的循序来执行
给你一段代码
Function GetHandlers(ByVal instance As Object, ByVal e As String) As String
Dim pi As PropertyInfo = GetType(Button).GetProperty("Events", BindingFlags.Instance Or BindingFlags.NonPublic)
Dim ehl As EventHandlerList = CType(pi.GetValue(instance, Nothing), EventHandlerList)
Dim fi As FieldInfo = GetType(Control).GetField("Event" e, BindingFlags.Static Or BindingFlags.NonPublic)
Dim d As [Delegate] = ehl(fi.GetValue(Nothing))
Dim handlerStr As String = Nothing
If (d Nothing) Then
For Each i As [Delegate] In d.GetInvocationList()
handlerStr = handlerStr i.Method.Name vbCrLf
Next
Else
handlerStr = "无"
End If
Return handlerStr
End Function
调用gethandlers函数可以得到某个控件的某个事件注册的所有handler,这个顺序就是真正的调用顺序了
但我觉得还是应该不要太过依赖这部分内容,不管是用handles还是addhandler,现在是这样,以后的版本说不定就变成其他了,因为ms并没有对他们有过任何的明文说明
名称
说明
Activated
当使用代码激活或用户激活窗体时发生。
AutoSizeChanged
当 AutoSize 属性更改时发生。
AutoValidateChanged
当 AutoValidate 属性更改时发生。
BackColorChanged
当 BackColor 属性的值更改时发生。(从 Control 继承。)
BackgroundImageChanged
当 BackgroundImage 属性的值更改时发生。(从 Control 继承。)
BackgroundImageLayoutChanged
当 BackgroundImageLayout 属性更改时发生。(从 Control 继承。)
BindingContextChanged
当 BindingContext 属性的值更改时发生。(从 Control 继承。)
CausesValidationChanged
当 CausesValidation 属性的值更改时发生。(从 Control 继承。)
ChangeUICues
焦点或键盘用户界面 (UI) 提示更改时发生。(从 Control 继承。)
Click
在单击控件时发生。(从 Control 继承。)
ClientSizeChanged
当 ClientSize 属性的值更改时发生。(从 Control 继承。)
Closed
关闭窗体时发生。
Closing
关闭窗体时发生。
ContextMenuChanged
当 ContextMenu 属性的值更改时发生。(从 Control 继承。)
ContextMenuStripChanged
当 ContextMenuStrip 属性的值更改时发生。(从 Control 继承。)
ControlAdded
在将新控件添加到 Control.ControlCollection 时发生。(从 Control 继承。)
ControlRemoved
在从 Control.ControlCollection 移除控件时发生。(从 Control 继承。)
CursorChanged
当 Cursor 属性的值更改时发生。(从 Control 继承。)
Deactivate
当窗体失去焦点并不再是活动窗体时发生。
Disposed
当通过调用 Dispose 方法释放组件时发生。(从 Component 继承。)
DockChanged
当 Dock 属性的值更改时发生。(从 Control 继承。)
DoubleClick
在双击控件时发生。(从 Control 继承。)
DragDrop
拖放操作完成时发生。(从 Control 继承。)
DragEnter
在将对象拖入控件的边界时发生。(从 Control 继承。)
DragLeave
将对象拖出控件的边界时发生。(从 Control 继承。)
DragOver
在将对象拖到控件的边界上发生。(从 Control 继承。)
EnabledChanged
在 Enabled 属性值更改后发生。(从 Control 继承。)
Enter
进入控件时发生。(从 Control 继承。)
FontChanged
在 Font 属性值更改时发生。(从 Control 继承。)
ForeColorChanged
在 ForeColor 属性值更改时发生。(从 Control 继承。)
FormClosed
关闭窗体后发生。
FormClosing
关闭窗体前发生。
GiveFeedback
在执行拖动操作期间发生。(从 Control 继承。)
GotFocus
在控件接收焦点时发生。(从 Control 继承。)
HandleCreated
在为控件创建句柄时发生。(从 Control 继承。)
HandleDestroyed
在控件的句柄处于销毁过程中时发生。(从 Control 继承。)
HelpButtonClicked
单击“帮助”按钮时发生。
HelpRequested
用户请求控件帮助时发生。(从 Control 继承。)
ImeModeChanged
在 ImeMode 属性更改后发生。(从 Control 继承。)
InputLanguageChanged
更改窗体的输入语言后发生。
InputLanguageChanging
当用户尝试更改窗体的输入语言时发生。
Invalidated
控件的显示要求重新绘制时发生。(从 Control 继承。)
KeyDown
在控件有焦点的情况下按下键时发生。(从 Control 继承。)
KeyPress
在控件有焦点的情况下字符、空格或退格键时发生。(从 Control 继承。)
KeyUp
在控件有焦点的情况下释放键时发生。(从 Control 继承。)
Layout
在控件应重新定位其子控件时发生。(从 Control 继承。)
Leave
在输入焦点离开控件时发生。(从 Control 继承。)
Load
在第一次显示窗体前发生。
LocationChanged
在 Location 属性值更改后发生。(从 Control 继承。)
LostFocus
在控件失去焦点时发生。(从 Control 继承。)
MarginChanged
当 Margin 属性更改时发生。
MaximizedBoundsChanged
在 MaximizedBounds 属性的值更改后发生。
MaximumSizeChanged
在 MaximumSize 属性的值更改后发生。
MdiChildActivate
在多文档界面 (MDI) 应用程序内激活或关闭 MDI 子窗体时发生。
MenuComplete
当窗体菜单失去焦点时发生。
MenuStart
当窗体菜单接收焦点时发生。
MinimumSizeChanged
在 MinimumSize 属性的值更改后发生。
MouseCaptureChanged
当控件失去鼠标捕获时发生。(从 Control 继承。)
MouseClick
用鼠标单击控件时发生。(从 Control 继承。)
MouseDoubleClick
用鼠标双击控件时发生。(从 Control 继承。)
MouseDown
当鼠标指针位于控件上并按下鼠标键时发生。(从 Control 继承。)
MouseEnter
在鼠标指针进入控件时发生。(从 Control 继承。)
MouseHover
在鼠标指针停放在控件上时发生。(从 Control 继承。)
MouseLeave
在鼠标指针离开控件时发生。(从 Control 继承。)
MouseMove
在鼠标指针移到控件上时发生。(从 Control 继承。)
MouseUp
在鼠标指针在控件上并释放鼠标键时发生。(从 Control 继承。)
MouseWheel
在控件有焦点且鼠标轮移动时发生。(从 Control 继承。)
Move
在移动控件时发生。(从 Control 继承。)
PaddingChanged
在控件空白区更改时发生。(从 Control 继承。)
Paint
在重绘控件时发生。(从 Control 继承。)
ParentChanged
在 Parent 属性值更改时发生。(从 Control 继承。)
PreviewKeyDown
在焦点位于此控件上的情况下,当有按键动作时发生(在 KeyDown 事件之前发生)。(从Control 继承。)
QueryAccessibilityHelp
在 AccessibleObject 为辅助功能应用程序提供帮助时发生。(从 Control 继承。)
QueryContinueDrag
在拖放操作期间发生,并且允许拖动源确定是否应取消拖放操作。(从 Control 继承。)
RegionChanged
当 Region 属性的值更改时发生。(从 Control 继承。)
Resize
在调整控件大小时发生。(从 Control 继承。)
ResizeBegin
窗体进入大小调整模式时发生。
ResizeEnd
窗体退出大小调整模式时发生。
RightToLeftChanged
在 RightToLeft 属性值更改时发生。(从 Control 继承。)
RightToLeftLayoutChanged
更改 RightToLeftLayout 属性值之后发生。
Scroll
用户或代码滚动工作区时发生。(从 ScrollableControl 继承。)
Shown
只要窗体是首次显示就发生。
SizeChanged
在 Size 属性值更改时发生。(从 Control 继承。)
StyleChanged
在控件样式更改时发生。(从 Control 继承。)
SystemColorsChanged
系统颜色更改时发生。(从 Control 继承。)
TabIndexChanged
此 API 支持 产品 基础结构,不能在代码中直接使用。 当 TabIndex 属性的值更改时发生。
TabStopChanged
当 TabStop 属性更改时发生。
TextChanged
在 Text 属性值更改时发生。(从 Control 继承。)
Validated
在控件完成验证时发生。(从 Control 继承。)
Validating
在控件验证时发生。(从 Control 继承。)
VisibleChanged
在 Visible 属性值更改时发生。(从 Control 继承。)
用下面类似的代码可以看到先后顺序
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就会输出了