VB.Net - 事件处理


事件基本上是用户操作,如按键、单击、鼠标移动等,或某些事件,如系统生成的通知。应用程序需要在事件发生时做出响应。

单击按钮,或在文本框中输入一些文本,或单击菜单项,都是事件的示例。事件是调用函数或可能引发另一个事件的操作。事件处理程序是告诉如何响应事件的函数。

VB.Net 是一种事件驱动语言。主要有两种类型的事件 -

  • 鼠标事件

  • 键盘事件

处理鼠标事件

鼠标事件随着鼠标在窗体和控件中的移动而发生。以下是与 Control 类相关的各种鼠标事件 -

  • MouseDown - 当按下鼠标按钮时发生

  • MouseEnter - 当鼠标指针进入控件时发生

  • MouseHover - 当鼠标指针悬停在控件上时发生

  • MouseLeave - 当鼠标指针离开控件时发生

  • MouseMove - 当鼠标指针移动到控件上时发生

  • MouseUp - 当鼠标指针位于控件上方并释放鼠标按钮时发生

  • MouseWheel - 当鼠标滚轮移动且控件具有焦点时发生

鼠标事件的事件处理程序获取MouseEventArgs类型的参数。MouseEventArgs 对象用于处理鼠标事件。它具有以下属性 -

  • 按钮- 表示按下的鼠标按钮

  • Clicks - 表示点击次数

  • 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
      ' Set the caption bar text of the form.   
      Me.Text = "tutorialspont.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("Thank you " & txtName.Text & ", for your kind cooperation")
   End Sub
End Class

当使用 Microsoft Visual Studio 工具栏上的“开始”按钮执行并运行上述代码时,它将显示以下窗口 -

事件处理示例1

尝试在文本框中输入文本并检查鼠标事件 -

事件处理结果表

处理键盘事件

以下是与 Control 类相关的各种键盘事件 -

  • KeyDown - 当按下某个键并且控件具有焦点时发生

  • KeyPress - 当按下一个键并且控件具有焦点时发生

  • KeyUp - 当控件具有焦点时释放按键时发生

KeyDown 和 KeyUp 事件的事件处理程序获取KeyEventArgs类型的参数。该对象具有以下属性 -

  • Alt - 指示是否按下 ALT 键

  • Control - 指示是否按下 CTRL 键

  • 已处理- 指示事件是否已处理

  • KeyCode - 存储事件的键盘代码

  • KeyData - 存储事件的键盘数据

  • KeyValue - 存储事件的键盘值

  • 修饰符- 它指示按下了哪些修饰键(Ctrl、Shift 和/或 Alt)

  • Shift - 指示是否按下 Shift 键

KeyDown 和 KeyUp 事件的事件处理程序获取KeyEventArgs类型的参数。该对象具有以下属性 -

  • 已处理- 指示是否处理了 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 工具栏上的“开始”按钮执行并运行上述代码时,它将显示以下窗口 -

VB.Net 事件示例

如果您将年龄或 ID 的文本保留为空白或输入一些非数字数据,则会出现警告消息框并清除相应的文本 -

VB.Net 事件示例