Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6章 用户交互:使用鼠标、键盘和菜单 Visual Basic 程序设计教程.

Similar presentations


Presentation on theme: "第6章 用户交互:使用鼠标、键盘和菜单 Visual Basic 程序设计教程."— Presentation transcript:

1 第6章 用户交互:使用鼠标、键盘和菜单 Visual Basic 程序设计教程

2 键盘、鼠标和菜单是用户和程序进行交互的主要工具。了解使用它们进行用户交互的设计要求、方法,并理解交互过程中如何进行控制。
Visual Basic程序设计教程

3 6.1 概述 键盘是主要的输入工具 。一般认为键盘对应于ASCII码,每一个按键将产生一个对应的ASCII码,由键盘传送给计算机的操作系统,根据用户程序的需要再由操作系统产生键值。 鼠标器是图形界面系统最为方便快捷的交互工具。鼠标操作有单击、双击以及移动等操作。 Visual Basic程序设计教程

4 菜单则是另外一种GUI工具模式,它把各种程序操作过程集于一个窗口中的菜单构造上,可以通过鼠标和键盘设置两者的结合使得对菜单的操作转换为程序的执行。
所谓的用户交互过程就是程序把执行的情况显示在屏幕上,用户把程序运行的数据、操作选择的命令,通过这些交互工具发送给程序,以达到互动、协调完成程序处理过程。 Visual Basic程序设计教程

5 6.2 一个使用鼠标事件的示例程序 【例6-1】使用鼠标按键和移动操作。
在这个示例中,把鼠标左键的按下(MouseDown)和放 开(MouseUp)分开处理,结合按键(Shift)的使用产生不同的效果。 6.2 一个使用鼠标事件的示例程序 Visual Basic程序设计教程

6 我们使用鼠标进行不同的操作,系统通过使用指针和对鼠标按键事件过程程序进行响应。有一些有关鼠标的属性可以在设置窗体和控件时进行设置,但对大多数情况,例如单击、双击和移动以及拖动鼠标需要进行必要的程序代码,以便完成响应的工作。 Visual Basic程序设计教程

7 当一个应用程序进入不同的状态,其鼠标的指针形状发展变化,用户可以根据指针的形状了解应该进行哪种类型的操作。
程序状态:改变鼠标指针的形状 当一个应用程序进入不同的状态,其鼠标的指针形状发展变化,用户可以根据指针的形状了解应该进行哪种类型的操作。 VB控件属性中使用MousePointer设置指针类型,使用MouseIcon设置鼠标形状的图形。 Visual Basic程序设计教程

8 Me.MouseIcon = LoadPicture("……\Ico\Point04.ico")
VB允许用户自定义鼠标指针,这时可以把MousePointer的属性值为设置为99,就可以通过程序指定一个鼠标指针的图标文件。例如在窗体的Load事件中加入语句: Me.MouseIcon = LoadPicture("……\Ico\Point04.ico") Visual Basic程序设计教程

9 【例6-2】显示VB的指针形状。 Visual Basic程序设计教程 Private Sub Form_Click()
Static Count As Byte Cls Print Chr(10) + Chr(13) + " 鼠标指针常量值:"; Count If Count < 16 Then Me.MousePointer = Count Else Count = 0 End If Count = Count + 1 End Sub Private Sub Form_Load() Show Me.FontSize = 15 Visual Basic程序设计教程

10 我们以MouseDown事件过程为例,解释VB是如何指示当前是哪个键按下的。
确定按下了哪个鼠标键 鼠标,常见的有两个按键和三个按键的鼠标。今天的鼠标器大多数把中间的那个按键个改为“滚轮”,在系统中仍然是当作三个按键处理的。因此按键势必要确定是哪个键被按下。 我们以MouseDown事件过程为例,解释VB是如何指示当前是哪个键按下的。 Visual Basic程序设计教程

11 【例6-3】编写一个程序,确定是哪个鼠标键被按下。
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Select Case Button Case vbRightButton ‘右键 1 LabRight.BackColor = vbRed LabMid.BackColor = LabLeft.BackColor = Case vbMiddleButton ‘中间键 4 LabRight.BackColor = LabMid.BackColor = vbRed Case vbLeftButton ‘左键 2 LabLeft.BackColor = vbRed End Select End Sub Visual Basic程序设计教程

12 在VB中,使用VB与按键参数Button关联的符号常量。如果左键按下,其参数常量为vbLeftButton(值1),右按键Button的参数常量为vbRightButton(值2),中间键为vbMiddleButton(值4)。在程序中使用的BackColor的值是从属性设置中取出(属性中使用的是16进制)经过Windows的计算器转换得到的十进制数。 Visual Basic程序设计教程

13 在程序中,还可以使用这些值的组合确定是否为组合键,例如左右键同时按下,可以使用为vbLeftButton+vbRightButton进行判断,值为3。
Visual Basic程序设计教程

14 6.3.3 轻松的交互:鼠标事件 VB提供了5个事件过程处理鼠标事件:
轻松的交互:鼠标事件 VB提供了5个事件过程处理鼠标事件: 单击(Click)、双击(DblClick)、按键(MouseDown)、释放按键(MouseUp)和MouseMove。 鼠标的单击或者双击过程都包含了按键和释放,因此在处理这些事件的时候要考虑它们会产生的效果。 Visual Basic程序设计教程

15 一个好的解决方法是设置标志变量。 一个鼠标事件的产生,VB会自动传递有关参数供事件过程代码处理。鼠标事件过程的参数为:
对象_鼠标事件名 (Button As Integer, Shift As Integer, X As Single, Y As Single) 其中: Button 指示是哪个键被按下 Shift 指示是否有和鼠标同时使用的键盘组合键 X,Y 指示现在鼠标在屏幕上的位置坐标x和y。 程序可以使用这些参数进行控制处理。 Visual Basic程序设计教程

16 Windows系统中使用鼠标拖放是一个常用的操作。拖放操作包含三个动作:按住左键不放、移动鼠标、释放鼠标按键。
鼠标拖放 Windows系统中使用鼠标拖放是一个常用的操作。拖放操作包含三个动作:按住左键不放、移动鼠标、释放鼠标按键。 拖放是一个操作过程,但由于它的特殊性,VB把它作为一个对象处理,因此有关于拖放的属性、事件和方法。 Visual Basic程序设计教程

17 表6.4 鼠标拖放的属性事件和方法 Visual Basic程序设计教程 类型 项目 描述 属性 DragMode
表6.4 鼠标拖放的属性事件和方法 类型 项目 描述 属性 DragMode 设置自动方式(取值为1),手工方式(值0) DragIcon 指定拖动控件时显示的图标 事件 DragDrop 识别何时将控件拖动到对象上 DragOver 识别何时在对象上拖动控件 方法 Drag 取值0,取消拖放,1拖放开始,2结束拖放 Visual Basic程序设计教程

18 和拖放相关的两个名词是“源”和“目的”。源是被拖动的控件,目标是在其上放源控件的对象。
【例6-4】编写一个程序,在窗体上放置一个回收站图形,然后把窗体上的一个文字为“鼠标拖放测试”的标签对象拖放到回收站对象上。使用一个消息对话框决定是否把标签对象回收。 Visual Basic程序设计教程

19 Visual Basic程序设计教程 Private Sub Form_Load()
Image1.Picture = LoadPicture(App.Path & “\程序\Ico\Waste.ico") End Sub Private Sub Image1_DragOver(Source As Control, X As Single, Y As Single, State As Integer) Dim Tem As Integer Tem = MsgBox("确定放入回收站?", vbYesNo, "选择") If Tem = 6 Then LabDrag.Visible = False End If Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single) Source.Move (X - Source.Width / 2), (Y - Source.Height / 2) Private Sub LabDrag_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) LabDrag.Drag 1 Private Sub LabDrag_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) LabDrag.Drag 2 Visual Basic程序设计教程

20 6.4 键盘 键盘和鼠标都是用户与程序之间交互操作中的主要元素。键盘按键也可触发事件,编程者可以通过程序做必要的修改并增强键盘的功能。
VB提供了 KeyPress、KeyUp 和 KeyDown 三种键盘事件,用来发送键盘输入到窗体和其他控件以实现用户的交互,用户通过这些键盘事件的编程实现比键盘输入更多的操作功能。 6.4 键盘 Visual Basic程序设计教程

21 6.4.1 一般按键:KeyPress事件 用户的键盘在聚焦的对象上按键将产生一个KeyPress事件。KeyPress事件过程为:
Private Sub 对象名_KeyPress ( [ Index As Integer,] KeyAscii As Integer ) 其中Index参数用于控件数组下标(参见第7.5节)。而KeyAscii则代表所对应按键的Ascii码。 KeyPress只能引用可打印的字符,如标准字母表的字符和数字键以及Enter或 Backspace键。 将 Ascii 参数转变为一个字符使用转换函数Chr(Ascii)。将一个字符反译成一个Ascii码使用如下函数Asc(char),Char为字符常量或者变量。 Visual Basic程序设计教程

22 【例6-5】在窗体上放置一个文本框,然后编写一个程序,完成键盘输入的字符转换:输入大写转换为小写,输入为小写的字符转换为大写。
Private Sub TxtDemo_KeyPress(KeyAscii As Integer) Dim Char1 As String Dim Digit1 As Integer If KeyAscii >= 65 And KeyAscii <= 90 Then Digit1 = KeyAscii + 32 Else Digit1 = KeyAscii - 32 End If Char1 = Chr(Digit1) TxtDemo.Text = Char1 + " 的ASCII码为:" + Str(Digit1) + " " + Chr(13) + Chr(10) TxtDemo.Text = " 的ASCII码为:" + Str$(KeyAscii) + " " + Chr(13) + Chr(10) + TxtDemo.Text End Sub Visual Basic程序设计教程

23 6.4.2 特殊按键处理:KeyDown和KeyUp
一个对象具有焦点时,事件在按下键( KeyDown )或松开键( KeyUp)时发生。KeyDown和KeyUp的处理过程为: Private Sub 对象名_KeyDown([index As Integer,] Keycode As Integer, Shift As Integer) Private Sub对象名_KeyUp([index As Integer,] Keycode As Integer, shift As Integer) Visual Basic程序设计教程

24 其中Index选项参数的意义和前述的KeyPress相同,其他几个参数的意义如下:
(1)Keycode是一个键代码,指示键盘上按下的物理键,诸如 vbKeyF1(F1键)或vbKeyHome(HOME 键)等。KeyPress中的KeyAscii只含可显示字符键,而KeyCode包含了键盘上所有键的代码。 (2)Shift是在该事件发生时响应Shift,Ctrl和Alt键的状态的一个整数。(参见下一节) Visual Basic程序设计教程

25 6.4.2 特殊按键处理:KeyDown和KeyUp
Visual Basic程序设计教程

26 【例6-6】设计一个程序,在窗口上建立两个文本框,在右边的文本框中输入键盘的按键,在左边的文本框中显示这个键符号和对应的的代码。
Private Sub Form_Load() Show TxtDemo2.SetFocus End Sub ‘ 按键产生KeyDown事件过程 Private Sub TxtDemo2_KeyDown(KeyCode As Integer, Shift As Integer) TxtDemo1.Text = Chr(KeyCode) + " 的代码为" TxtDemo1.Text = TxtDemo1.Text + Str$ ( KeyCode) TxtDemo2 = "" Visual Basic程序设计教程

27 6.5 组合:键盘Shift、Ctrl、Alt和鼠标键
在VB中,使用Shift参数保存Shift、Ctrl、Alt这三个键的状态,可以使用这些状态,和键盘的其他按键或者鼠标的Button按键进行组合。 表6.7 Shift参数关联的VB常量 常量 描述 vbShiftMask 1 Shift键被记录 vbCtrlMask 2 Ctrl键被记录 vbAltMask 4 Alt键被记录 6.5 组合:键盘Shift、Ctrl、Alt和鼠标键 Visual Basic程序设计教程

28 在VB中,允许组合键可以单独一个。两个或者三个全部被按下,因此Shift参数的值为3、6、7,它们都是有效值,分别代表Shift键和Ctrl键、Ctrl键和Atl键以及这三个键都被按下。
Visual Basic程序设计教程

29 菜单(Menu)是Windows应用程序中的重要组成部分。菜单的最大特点是把程序的功能以菜单的形式列出,用户需要的时候可以选择使用。
每一个菜单项对应于一段程序的执行,类似于执行一个命令。 VB支持Windows的下拉式和弹出式两种类型的菜单。 6.6 设计菜单 Visual Basic程序设计教程

30 什么是菜单 菜单标题 菜单栏 菜单项 分隔线 快捷键 图 6.7 菜单的组成元素 Visual Basic程序设计教程

31 6.6.2 使用菜单编辑器 在VB中,使用“菜单编辑器”设计菜单。有四种方法进入“菜单编辑器”。
使用菜单编辑器 在VB中,使用“菜单编辑器”设计菜单。有四种方法进入“菜单编辑器”。 (1)在VB IDE下,打开“工具”菜单,选择“菜单编辑器”。 (2)单击VB IDE菜单栏下方的工具按钮上的菜单编辑器, 图标为 。 (3)使用快捷键 Ctrl+E。 (4)在“工程”窗口使用快捷菜单,选择“菜单编辑器”。 菜单编辑器分为上下两个部分,上部为菜单控件属性,下部为菜单控件列表框。每建立一个菜单项,将被列在列表框中。 Visual Basic程序设计教程

32 Visual Basic程序设计教程 1.标题(Caption) 2.名称(Name) 3.索引(Index)
指定菜单项要显示的标题文字。 2.名称(Name) 这是作为菜单项控件的名称。 3.索引(Index) 4.快捷键(Short Cut) 在这个组合列表框中给出了VB预 先定义的各种快捷键,编程者可 以选择使用, 7.复选(Checked) 是否置复选标志(√)。 8.可用(Enabled) 9.可见(Visible) 11.分隔线 在菜单项的标题中,输入连接符“-”。 图6.8 菜单编辑器 Visual Basic程序设计教程

33 设计菜单 设计菜单的注意任务就是确定各个菜单项的名称以及要实现的内容,然后有条理地组织它们。我们设计应用程序应当尽量保持Windows应用程序的风格,界面上保持一致。 Visual Basic程序设计教程

34 “子菜单”,而子菜单也可以有子菜单。在VB中,允许每个菜单项最多包含5级子菜单。
子菜单 严格意义上,在主菜单 下的各个菜单项都是 “子菜单”,而子菜单也可以有子菜单。在VB中,允许每个菜单项最多包含5级子菜单。 尽管子菜单有时是需要的,但还是要限制使用它们,因为多级菜单结构往往会使得用户查找命令功能变得复杂。 Visual Basic程序设计教程

35 菜单事件只有一个,就是菜单的Click事件。除了分隔线外,每个菜单项都可以识别它对应的Click事件。
【例6-7】使用菜单设计一个完成二进制、十进制、八进制和十六进制数进行相互转换的程序。 Visual Basic程序设计教程

36 Visual Basic程序设计教程 Private Sub Form_Load() Show Label1.Caption = ""
TxtInNum.Text = "" TxtInNum.Enabled = False TxtOutNum.Text = "" TxtOutNum.Enabled = False End Sub Private Sub MnuExit_Click() End Private Sub MnuHex2_Click() Label1.Caption = "十进制数为:" Label2.Caption = "十六进制数为:" TxtInNum.Text = InputBox("请输入一个十进制数", "输入") TxtOutNum.Text = Hex(Val(TxtInNum.Text)) Private Sub MunOctor2_Click() '十进制到八进制 Label2.Caption = "八进制为:" TxtOutNum.Text = Oct(Val(TxtInNum.Text)) Visual Basic程序设计教程

37 在程序执行的不同状态下,单击鼠标的右键,弹出一个菜单,供用户选择合适的操作命令,对于Windows应用程序而言,不但是一个友好的显示效果,更是一个快捷的方法,因此弹出式菜单也叫快捷菜单。
6.7 快捷方式:弹出式菜单 Visual Basic程序设计教程

38 设计弹出式菜单 【例6-8】设计一个将文本框的文本进行对齐操作的弹出式菜单。 Visual Basic程序设计教程

39 1.使用菜单编辑器 在设计弹出式菜单时,主菜单项应设置“可见”属性为False(不选)。我们给这个弹出式菜单命名为PopMnu,下面有三个菜单项分别为“左对齐”“居中”和“右对齐”。当在窗口单击右键则弹出的是三个子菜单项的菜单。 Visual Basic程序设计教程

40 激活弹出式菜单使用PopupMenu方法。使用格式为:
或者使用调用的方法,格式为: Call PopupMenu (菜单名称) Visual Basic程序设计教程

41 4.对弹出式菜单的菜单项进行菜单过程的编程,使之完成命令操作。
3.在何地使用弹出式菜单 菜单对象要通过菜单事件触发,但由于弹出式菜单是隐藏的,也就是它的属性被设置为不可见,因此就需要另外的事件触发,再用PopupMenu方法显示弹出式菜单后进入菜单事件。一般是鼠标右键被按下, “弹出”菜单 4.对弹出式菜单的菜单项进行菜单过程的编程,使之完成命令操作。 Visual Basic程序设计教程

42 Visual Basic程序设计教程 Private Sub Form_Load()
TxtDemo.Text = Chr(13) + Chr(10) TxtDemo.Text = TxtDemo.Text + "这是一个关于弹出式菜单的示例程序" + Chr(13) + Chr(10) TxtDemo.Text = TxtDemo.Text + Chr(13) + Chr(10) + "单击鼠标右键,对文本进行对齐操作" End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = vbRightButton Then PopupMenu PopMnu1 Private Sub MnuLeft_Click() TxtDemo.Alignment = 0 Private Sub MnuMiddle_Click() TxtDemo.Alignment = 2 Private Sub MnuRight_Click() TxtDemo.Alignment = 1 Visual Basic程序设计教程

43 6.8 程序举例 【例6-9】设计一个程序,捕捉鼠标和按键的全部操作,并在窗口上显示鼠标和键盘的按键状态,即指示是哪个键被按下了。 设计思路: 捕捉键盘按键和鼠标按键,要知道究竟是哪个具体的位置,只有使用KeyDown事件和MouseDown事件。 Visual Basic程序设计教程

44 Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Label2.Caption = "您所按下的键是 " + Chr(KeyCode) + " 键值为 " + Str$(KeyCode) End Sub Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Str1 As String Str1 = "您按下的是鼠标的" Select Case Button Case 1: Label1.Caption = Str1 + "左按钮" Case 2: Label1.Caption = Str1 + "右按钮" Case 4: Label1.Caption = Str1 + "中间按钮" End Select Visual Basic程序设计教程

45 【例6-10】设计一个简单的记事本 Visual Basic程序设计教程

46 Visual Basic程序设计教程 Private Sub TxtCopy_Click() On Error Resume Next
Clipboard.SetText TxtDemo.SelText End Sub Private Sub TxtCut_Click() TxtDemo.SelText = "" Private Sub TxtPaste_Click() TxtDemo.SelText = Clipboard.GetText Visual Basic程序设计教程


Download ppt "第6章 用户交互:使用鼠标、键盘和菜单 Visual Basic 程序设计教程."

Similar presentations


Ads by Google