VB.Net - 事件处理

  • 简述

    事件基本上是用户操作,如按键、点击、鼠标移动等,或某些事件,如系统生成的通知。应用程序需要在事件发生时做出响应。
    单击按钮,或在文本框中输入一些文本,或单击菜单项,都是事件的示例。事件是调用函数或可能导致另一个事件的操作。事件处理程序是告诉如何响应事件的函数。
    VB.Net 是一种事件驱动语言。主要有两种类型的事件 -
    • 鼠标事件
    • 键盘事件
  • 处理鼠标事件

    鼠标事件随着鼠标在窗体和控件中的移动而发生。以下是与 Control 类相关的各种鼠标事件 -
    • MouseDown - 按下鼠标按钮时发生
    • MouseEnter - 当鼠标指针进入控件时发生
    • MouseHover - 当鼠标指针悬停在控件上时发生
    • MouseLeave - 当鼠标指针离开控件时发生
    • MouseMove - 当鼠标指针移动到控件上时发生
    • MouseUp - 当鼠标指针在控件上并释放鼠标按钮时发生
    • MouseWheel - 当鼠标滚轮移动并且控件有焦点时发生
    鼠标事件的事件处理程序获得一个类型的参数 MouseEventArgs. MouseEventArgs 对象用于处理鼠标事件。它具有以下属性 -
    • Buttons - 表示按下的鼠标按钮
    • Clicks - 表示点击次数
    • Delta - 表示鼠标滚轮旋转的棘爪数
    • X − 表示鼠标点击的 x 坐标
    • Y − 表示鼠标点击的 y 坐标
  • 例子

    下面是一个示例,显示了如何处理鼠标事件。采取以下步骤 -
    • 在表单中添加三个标签、三个文本框和一个按钮控件。
    • 将标签的文本属性分别更改为 - Customer ID、Name 和 Address。
    • 将文本框的名称属性分别更改为 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
    
    当上面的代码被执行并运行时使用 Start Microsoft Visual Studio 工具栏上可用的按钮,它将显示以下窗口 -
    事件处理示例 1
    尝试在文本框中输入文本并检查鼠标事件 -
    事件处理结果表
  • 处理键盘事件

    以下是与 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
    
    当上面的代码被执行并运行时使用 Start Microsoft Visual Studio 工具栏上可用的按钮,它将显示以下窗口 -
    VB.Net 事件示例
    如果您将年龄或 ID 的文本留空或输入一些非数字数据,它会给出一个警告消息框并清除相应的文本 -
    VB.Net 事件示例