VB.Net - 事件处理
事件基本上是用户操作,如按键、单击、鼠标移动等,或某些事件,如系统生成的通知。 应用程序需要在事件发生时做出响应。
单击按钮,或在文本框中输入一些文本,或单击菜单项,都是事件的示例。 事件是调用函数或可能引发另一个事件的操作。 事件处理程序是告诉如何响应事件的函数。
VB.Net 是一种事件驱动语言。 主要有两种类型的事件 −
鼠标事件
键盘事件
处理鼠标事件
鼠标事件随着鼠标在窗体和控件中的移动而发生。 以下是与 Control 类相关的各种鼠标事件 −
MouseDown − 当按下鼠标按钮时发生
MouseEnter − 当鼠标指针进入控件时发生
MouseHover − 当鼠标指针悬停在控件上时发生
MouseLeave − 当鼠标指针离开控件时发生
MouseMove − 当鼠标指针移到控件上时发生
MouseUp − 当鼠标指针位于控件上方并释放鼠标按钮时发生
MouseWheel − 当鼠标滚轮移动且控件具有焦点时发生
鼠标事件的事件处理程序获取 MouseEventArgs 类型的参数。 MouseEventArgs 对象用于处理鼠标事件。 它具有以下属性 −
Buttons − indicates the mouse button pressed
Clicks − i表示点击次数
Delta − 表示鼠标滚轮转动的棘爪数量
X − 表示鼠标点击的x坐标
Y − 表示鼠标点击的y坐标
示例
下面是一个例子,展示了如何处理鼠标事件。 采取以下步骤 −
在表单中添加三个标签、三个文本框和一个按钮控件。
将标签的文本属性分别更改为 - 客户 ID、姓名和地址。
将文本框的名称属性分别更改为 txtID、txtName 和 txtAddress。
将按钮的文本属性更改为"提交"。
在代码编辑器窗口中添加以下代码 −
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 设置表单的标题栏文本。
Me.Text = "tutorialspont.com"
End Sub
Private Sub txtID_MouseEnter(sender As Object, e As EventArgs)_
Handles txtID.MouseEnter
'用于处理鼠标在 ID 文本框中输入的代码
txtID.BackColor = Color.CornflowerBlue
txtID.ForeColor = Color.White
End Sub
Private Sub txtID_MouseLeave(sender As Object, e As EventArgs) _
Handles txtID.MouseLeave
'处理鼠标停留在 ID 文本框上的代码
txtID.BackColor = Color.White
txtID.ForeColor = Color.Blue
End Sub
Private Sub txtName_MouseEnter(sender As Object, e As EventArgs) _
Handles txtName.MouseEnter
'用于处理鼠标在名称文本框中输入的代码
txtName.BackColor = Color.CornflowerBlue
txtName.ForeColor = Color.White
End Sub
Private Sub txtName_MouseLeave(sender As Object, e As EventArgs) _
Handles txtName.MouseLeave
'处理鼠标离开名称文本框的代码
txtName.BackColor = Color.White
txtName.ForeColor = Color.Blue
End Sub
Private Sub txtAddress_MouseEnter(sender As Object, e As EventArgs) _
Handles txtAddress.MouseEnter
'用于处理鼠标在地址文本框中输入的代码
txtAddress.BackColor = Color.CornflowerBlue
txtAddress.ForeColor = Color.White
End Sub
Private Sub txtAddress_MouseLeave(sender As Object, e As EventArgs) _
Handles txtAddress.MouseLeave
'处理鼠标离开地址文本框的代码
txtAddress.BackColor = Color.White
txtAddress.ForeColor = Color.Blue
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) _
Handles Button1.Click
MsgBox("Thank you " & txtName.Text & ", for your kind cooperation")
End Sub
End Class
当执行上述代码并使用 Microsoft Visual Studio 工具栏上的开始按钮运行时,它将显示以下窗口 −
尝试在文本框中输入文本并检查鼠标事件 −
处理键盘事件
以下是与 Control 类相关的各种键盘事件 −
KeyDown − 当按下某个键并且控件获得焦点时发生
KeyPress − 当按下一个键并且控件具有焦点时发生
KeyUp − 当控件具有焦点时释放按键时发生
KeyDown 和 KeyUp 事件的事件处理程序获取 KeyEventArgs 类型的参数。 该对象具有以下属性 −
Alt − 表示是否按下了ALT键
Control − 表示是否按下了CTRL键
Handled − 指示事件是否被处理
KeyCode − 存储事件的键盘代码
KeyData − 存储事件的键盘数据
KeyValue − 存储事件的键盘值
Modifiers − 它指示按下了哪些修饰键(Ctrl、Shift 和/或 Alt)
Shift − 它指示是否按下了 Shift 键
KeyDown 和 KeyUp 事件的事件处理程序获取 KeyEventArgs 类型的参数。 该对象具有以下属性 −
Handled − 指示是否处理 KeyPress 事件
KeyChar − 存储与按下的键对应的字符
示例
让我们继续前面的示例来展示如何处理键盘事件。 该代码将验证用户是否输入了一些有关其客户 ID 和年龄的数字。
添加一个文本属性为"Age"的标签,并添加一个名为 txtAge 的相应文本框。
添加以下代码来处理文本框txtID的KeyUP事件。
Private Sub txtID_KeyUP(sender As Object, e As KeyEventArgs) _
Handles txtID.KeyUp
If (Not Char.IsNumber(ChrW(e.KeyCode))) Then
MessageBox.Show("Enter numbers for your Customer ID")
txtID.Text = " "
End If
End Sub
添加以下代码,用于处理文本框txtID的KeyUP事件。
Private Sub txtAge_KeyUP(sender As Object, e As KeyEventArgs) _
Handles txtAge.KeyUp
If (Not Char.IsNumber(ChrW(e.keyCode))) Then
MessageBox.Show("Enter numbers for age")
txtAge.Text = " "
End If
End Sub
当执行上述代码并使用 Microsoft Visual Studio 工具栏上的开始按钮运行时,将显示以下窗口 −
如果您将年龄或 ID 的文本保留为空白或输入一些非数字数据,则会出现警告消息框并清除相应的文本 −

