codecamp

VB.Net - 事件处理

事件基本上是一个用户操作,如按键,点击,鼠标移动等,或某些事件,如系统生成的通知。 应用程序需要在事件发生时对其进行响应。

单击按钮,或在文本框中输入某些文本,或单击菜单项,都是事件的示例。 事件是调用函数或可能导致另一个事件的操作。

事件处理程序是指示如何响应事件的函数。
VB.Net是一种事件驱动的语言。 主要有两种类型的事件:

  • 鼠标事件 Mouse events

  • 键盘事件 Keyboard events

处理鼠标事件

鼠标事件发生与鼠标移动形式和控件。以下是与Control类相关的各种鼠标事件:

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

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

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

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

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

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

  • MouseWheel -它发生在鼠标滚轮移动和控件有焦点时

鼠标事件的事件处理程序获得一个类型为MouseEventArgs的参数。 MouseEventArgs对象用于处理鼠标事件。它具有以下属性:

  • Buttons-表示按下鼠标按钮

  • 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键/ p>

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

VB.Net事件示例

如果将age或ID的文本留空,或输入一些非数字数据,则会出现一个警告消息框,并清除相应的文本:

VB.Net事件示例

VB.Net - 高级表单
VB.Net - 正则表达式
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

VB.Net有用的资源

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }