事件一般是是按键,点击,鼠标移动等用户操作,或者是系统生成的通知等一些事件。应用程序需要在事件发生时做出响应。
点击一个按钮,或者在文本框中输入一些文本,或者点击一个菜单项,都是事件的例子。事件是调用函数或可能导致另一个事件的操作。
事件处理程序是告诉如何响应事件的函数。
VB.Net是一种事件驱动的语言。主要有两种类型的事件:
- 鼠标事件
- 键盘事件
1. 处理鼠标事件
鼠标事件发生在窗体和控件中的鼠标移动。以下是与Control
类相关的各种鼠标事件:
- MouseDown - 当按下鼠标按钮时发生
- MouseEnter - 当鼠标指针进入控件时发生
- MouseHover - 当鼠标悬停在控件上时发生
- MouseLeave - 当鼠标指针离开控件时发生
- MouseMove - 当鼠标指针在控件上移动时发生
- MouseUp - 鼠标指针位于控件上并释放鼠标按钮时发生
- MouseWheel - 当鼠标滚轮移动并且控件具有焦点时发生
鼠标事件的事件处理程序获取MouseEventArgs
类型的参数。 MouseEventArgs
对象用于处理鼠标事件。它具有以下属性:
- Buttons - 指示按下鼠标按钮
- Clicks - 表示点击次数
- Delta - 指示鼠标轮旋转的制动器数量
- X - 表示鼠标点击的
x
坐标 - Y - 表示鼠标点击的
y
坐标
示例
以下是一个示例,演示如何处理鼠标事件。参考以下步骤:
- 在窗体中添加三个标签,三个文本框和一个按钮控件。
- 将标签的
Text
属性分别更改为 - 客户ID,名称和地址。 - 将文本框的
Name
属性分别更改为:txtID
,txtName
和txtAddress
。 - 将按钮的文本属性更改为“提交”。
设计的窗体效果图如下 -
在代码编辑器窗口中添加以下代码:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Set the caption bar text of the form.
Me.Text = "鼠标事件示例 - yiibai.com"
End Sub
Private Sub txtID_MouseEnter(sender As Object, e As EventArgs) Handles txtID.MouseEnter
'code for handling mouse enter on ID textbox
txtID.BackColor = Color.CornflowerBlue
txtID.ForeColor = Color.White
End Sub
Private Sub txtID_MouseLeave(sender As Object, e As EventArgs) Handles txtID.MouseLeave
'code for handling mouse leave on ID textbox
txtID.BackColor = Color.White
txtID.ForeColor = Color.Blue
End Sub
Private Sub txtName_MouseEnter(sender As Object, e As EventArgs) Handles txtName.MouseEnter
'code for handling mouse enter on Name textbox
txtName.BackColor = Color.CornflowerBlue
txtName.ForeColor = Color.White
End Sub
Private Sub txtName_MouseLeave(sender As Object, e As EventArgs) Handles txtName.MouseLeave
'code for handling mouse leave on Name textbox
txtName.BackColor = Color.White
txtName.ForeColor = Color.Blue
End Sub
Private Sub txtAddress_MouseEnter(sender As Object, e As EventArgs) Handles txtAddress.MouseEnter
'code for handling mouse enter on Address textbox
txtAddress.BackColor = Color.CornflowerBlue
txtAddress.ForeColor = Color.White
End Sub
Private Sub txtAddress_MouseLeave(sender As Object, e As EventArgs) Handles txtAddress.MouseLeave
'code for handling mouse leave on Address textbox
txtAddress.BackColor = Color.White
txtAddress.ForeColor = Color.Blue
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
MsgBox("您已填写了一个姓名为: " & txtName.Text & " 的客户信息")
End Sub
End Class
当上面的代码执行并使用Microsoft Visual Studio工具栏上的“开始”按钮运行时,它将显示以下窗口:
尝试在文本框中输入文本并测试鼠标事件:
2. 处理键盘事件
以下是与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 - 存储与所按键相对应的字符
示例
下面将继续前面的例子来展示如何处理键盘事件。代码将验证用户输入客户编号和年龄输入的值必需是数字。设计的界面效果如下 -
参考以下步骤:
- 添加一个文本属性为‘年龄’的标签,并添加一个名为
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("客户的编号必须是数字值") txtID.Text = " " End If End Sub
- 添加以下代码来处理文本框
txtAge
的KeyUP
事件。Private Sub txtAge_KeyUP(sender As Object, e As KeyEventArgs) Handles txtAge.KeyUp If (Not Char.IsNumber(ChrW(e.KeyCode))) Then MessageBox.Show("客户的年龄必须是数字值") txtAge.Text = " " End If End Sub
当上面的代码执行并使用Microsoft Visual Studio工具栏上的“开始”按钮运行时,它将显示以下窗口:
如果将年龄或客户编号的文本输入框留空或输入一些非数字数据,则会显示警告消息框并清除相应的文本: