vb.net入门——窗体中的事件处理


在几乎所有应用程序中,响应用户或系统事件是基本的功能,所以上一篇文章我们掌握了窗体的基本控制操作后,这里我们来学学如何在窗体中创建和使用事件处理。

在vb.net中,我们可以在 Windows 窗体设计器上创建默认事件处理程序,也可以通过在代码编辑器中创建时间处理程序。下面我们就先建立一个Windows项目,然后再Form1中拖放一个Button1按钮,一步一步学习怎么在程序中编写关于这个Button1按钮的事件处理程序。

一、在 Windows 窗体设计器上创建默认事件处理程序

在 Windows 窗体设计器上双击Button1按钮,代码编辑器打开,鼠标指针位于新创建的默认事件处理程序内,将适当的代码添加到该事件处理程序中,如下图所示: 

在窗体中创建默认事件处理程序

代码如下所示:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

'在这里添加上必要的处理代码,如

msgbox "你单击了按钮"

End Sub

二、在代码设计器上创建事件处理程序

1、右击窗体并选择“查看代码”,进入代码编辑器状态

2、从“类名”下拉框,选择要向其中添加特定事件处理程序的控件,这里是Button1。

在代码编辑器的“类名”下拉框中选择

3、再从“类名”右边的“方法名称”下拉框中,选择要为其添加特定处理程序的事件,这里我们需要处理按钮的单击事件,所以选择Click方法,代码编辑器插入适当的事件处理程序并在方法中放置插入点。如下图所示:

在代码编辑器的“方法名称”下拉框中选择处理事件

提示:如果我们已经建立了某个处理事件,则在方法名称的下拉列表中以粗体标记该事件。

这样代码编辑器将会自动创建Button 控件的 Click 事件,将适当的代码添加到该事件处理程序中即可。 如下所示代码:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'在这里添加上必要的处理代码,如

msgbox "你单击了按钮"

End Sub

三、在运行时创建事件处理程序

我们除了可以使用 Windows 窗体设计器创建事件外,还可在运行时创建事件处理程序。这样我们就可以灵活地建立必要的程序关联了。

1、打开Form1窗体的代码编辑器。 

2、在代码编辑器中创建如下所示的方法: 

Private Sub ButtonClick(ByVal sender As Object, ByVal e As EventArgs)

'在这里添加上必要的处理代码,如

msgbox "你单击了按钮"

End Sub

3、将适合应用程序的代码添加到事件处理程序中。 

4、确定要为其创建事件处理程序的窗体或控件。 

5、在Form1的Load事件中写入如下代码,把 ButtonClick事件处理程序关联到Button1.Click事件。

AddHandler Button1.Click, AddressOf ButtonClick 

现在按F5运行,然后单击Button1按钮,是不是一样弹出“你单击了按钮”的对话框了呢!虽然我们没有创建Button1的单击事件,但是因为如上代码已经把ButtonClick处理过程与Button1.Click事件关联起来了,所以Button1.Click事件一样会响应的。

四、确定所按下的组合键

很多情况下,我们需要在应用程序中接受和响应用户的按键动作。在创建接受用户击键的应用程序时,我们还可能希望监视 SHIFT、ALT 和 CTRL 键等组合键。当一个组合键与其他键同时按下,或在单击鼠标的同时按下时,使得应用程序能够做出适当响应:字母 S 可能仅导致一个“S”出现在屏幕上,但是如果按下 CTRL+S,则可保存当前文档。

确定所按下的组合键 

对 ModifierKeys 属性和 Keys 枚举的值使用按位与运算符(在 Visual Basic 中为 And),确定所按下的组合键。(ModifierKeys 是 Control 类的共享成员),如下代码所示,响应了同时按下了Shift和Control组合键的情况

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

If (Control.ModifierKeys And Keys.Shift + Keys.Control) = Keys.Shift + Keys.Control Then

MessageBox.Show("你同时按下了Shift和Control组合键")

End if

End Sub

提示:我们需要在窗体属性中把 KeyPreview 属性设置为true,才能让响应按键的事件,如下图所示:

设置窗体的KeyPreview属性

五、将多个事件连接到 Windows 窗体中的单个事件处理程序

在应用程序设计中,我们可能会碰到多个事件处理事件引发的处理过程是一样,例如,如果菜单命令与窗体上的按钮公开的功能相同,让它们引发同一事件通常能大大节约时间。下面我们就来建立例子,要求是可以使用菜单命令中的“退出”或者用命令按钮关闭程序。

首先从工具栏中拖放一个MainMenu菜单类控件放到Form1窗体上,如下图所示:

从工具箱中拖放一个菜单类控件

注意:vb.net中的菜单控件和之前的版本是由区别的,它会把菜单控件单独显示在窗体所在区域的下方,而不是显示在窗体上。

在菜单控件中编辑,先建立一个父菜单项(text=操作,name=mFile),再在它下面建立一个子菜单项(text=退出,name=mExit),拖放一个Button控件(text=退出,name=bExit),界面如下图所示:

 

 

布置好界面以后,双击“退出”按钮,为它添加单击事件,代码如下所示:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click

'在这里添加结束程序的代码,

End

End Sub

而对于菜单项“退出”的mExit.Click事件,其处理代码也是相同,所以我们可以把它连接到Button1.Click这个处理过程中来,这样我们只需要在上面的代码的 Handles 字句后面添加上mExit.Click即可,注意,多个事件之间使用","隔开,如下图所示:

在某个事件处理程序的Handles后添加其它的功能相同的处理事件

现在按F5运行测试,菜单和按钮的单击是不是都一样可以退出程序呢。

小结:在这篇文章里面我们学了窗体事件的添加,还顺带了解了下MainMenu菜单类控件。下一章我们将学窗体的继承,请你继续关注巧巧读书网的vb.net入门系列文章,点击这里看下一篇:vb.net入门——窗体的继承

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3