版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第6章 用户交互:使用鼠标、键盘和菜单,Visual Basic 程序设计教程,Visual Basic程序设计教程,2,键盘、鼠标和菜单是用户和程序进行交互的主要工具。了解使用它们进行用户交互的设计要求、方法,并理解交互过程中如何进行控制。,Visual Basic程序设计教程,3,键盘是主要的输入工具 。一般认为键盘对应于ASCII码,每一个按键将产生一个对应的ASCII码,由键盘传送给计算机的操作系统,根据用户程序的需要再由操作系统产生键值。 鼠标器是图形界面系统最为方便快捷的交互工具。鼠标操作有单击、双击以及移动等操作。,6.1 概述,Visual Basic程序设计教程,4,菜单则是
2、另外一种GUI工具模式,它把各种程序操作过程集于一个窗口中的菜单构造上,可以通过鼠标和键盘设置两者的结合使得对菜单的操作转换为程序的执行。 所谓的用户交互过程就是程序把执行的情况显示在屏幕上,用户把程序运行的数据、操作选择的命令,通过这些交互工具发送给程序,以达到互动、协调完成程序处理过程。,Visual Basic程序设计教程,5,【例6-1】使用鼠标按键和移动操作。 在这个示例中,把鼠标左键的按下(MouseDown)和放 开(MouseUp)分开处理,结合按键(Shift)的使用产生不同的效果。,6.2 一个使用鼠标事件的示例程序,Visual Basic程序设计教程,6,我们使用鼠标进
3、行不同的操作,系统通过使用指针和对鼠标按键事件过程程序进行响应。有一些有关鼠标的属性可以在设置窗体和控件时进行设置,但对大多数情况,例如单击、双击和移动以及拖动鼠标需要进行必要的程序代码,以便完成响应的工作。,Visual Basic程序设计教程,7,6.3.1 程序状态:改变鼠标指针的形状 当一个应用程序进入不同的状态,其鼠标的指针形状发展变化,用户可以根据指针的形状了解应该进行哪种类型的操作。 VB控件属性中使用MousePointer设置指针类型,使用MouseIcon设置鼠标形状的图形。,Visual Basic程序设计教程,8,VB允许用户自定义鼠标指针,这时可以把MousePoin
4、ter的属性值为设置为99,就可以通过程序指定一个鼠标指针的图标文件。例如在窗体的Load事件中加入语句: Me.MouseIcon = LoadPicture(IcoPoint04.ico),Visual Basic程序设计教程,9,【例6-2】显示VB的指针形状。,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 = Co
5、unt + 1 End Sub Private Sub Form_Load() Show Me.FontSize = 15 End Sub,Visual Basic程序设计教程,10,6.3.2 确定按下了哪个鼠标键 鼠标,常见的有两个按键和三个按键的鼠标。今天的鼠标器大多数把中间的那个按键个改为“滚轮”,在系统中仍然是当作三个按键处理的。因此按键势必要确定是哪个键被按下。 我们以MouseDown事件过程为例,解释VB是如何指示当前是哪个键按下的。,Visual Basic程序设计教程,11,Private Sub Form_MouseDown(Button As Integer, Shif
6、t As Integer, X As Single, Y As Single) Select Case Button Case vbRightButton 右键 1 LabRight.BackColor = vbRed LabMid.BackColor = 12632256 LabLeft.BackColor = 12632256 Case vbMiddleButton 中间键 4 LabRight.BackColor = 12632256 LabMid.BackColor = vbRed LabLeft.BackColor = 12632256 Case vbLeftButton 左键 2
7、LabRight.BackColor = 12632256 LabMid.BackColor = 12632256 LabLeft.BackColor = vbRed End Select End Sub,【例6-3】编写一个程序,确定是哪个鼠标键被按下。,Visual Basic程序设计教程,12,在VB中,使用VB与按键参数Button关联的符号常量。如果左键按下,其参数常量为vbLeftButton(值1),右按键Button的参数常量为vbRightButton(值2),中间键为vbMiddleButton(值4)。在程序中使用的BackColor的值是从属性设置中取出(属性中使用的是
8、16进制)经过Windows的计算器转换得到的十进制数。,Visual Basic程序设计教程,13,在程序中,还可以使用这些值的组合确定是否为组合键,例如左右键同时按下,可以使用为vbLeftButtonvbRightButton进行判断,值为3。,Visual Basic程序设计教程,14,6.3.3 轻松的交互:鼠标事件 VB提供了5个事件过程处理鼠标事件: 单击(Click)、双击(DblClick)、按键(MouseDown)、释放按键(MouseUp)和MouseMove。 鼠标的单击或者双击过程都包含了按键和释放,因此在处理这些事件的时候要考虑它们会产生的效果。,Visual B
9、asic程序设计教程,15,一个好的解决方法是设置标志变量。 一个鼠标事件的产生,VB会自动传递有关参数供事件过程代码处理。鼠标事件过程的参数为: 对象_鼠标事件名 (Button As Integer, Shift As Integer, X As Single, Y As Single) 其中: Button指示是哪个键被按下 Shift指示是否有和鼠标同时使用的键盘组合键 X,Y指示现在鼠标在屏幕上的位置坐标x和y。 程序可以使用这些参数进行控制处理。,Visual Basic程序设计教程,16,6.3.4 鼠标拖放 Windows系统中使用鼠标拖放是一个常用的操作。拖放操作包含三个动作
10、:按住左键不放、移动鼠标、释放鼠标按键。 拖放是一个操作过程,但由于它的特殊性,VB把它作为一个对象处理,因此有关于拖放的属性、事件和方法。,Visual Basic程序设计教程,17,表6.4 鼠标拖放的属性事件和方法,Visual Basic程序设计教程,18,和拖放相关的两个名词是“源”和“目的”。源是被拖动的控件,目标是在其上放源控件的对象。 【例6-4】编写一个程序,在窗体上放置一个回收站图形,然后把窗体上的一个文字为“鼠标拖放测试”的标签对象拖放到回收站对象上。使用一个消息对话框决定是否把标签对象回收。,Visual Basic程序设计教程,19,Private Sub Form_
11、Load() Image1.Picture = LoadPicture(App.Path & “程序IcoWaste.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 End Sub Private Sub Form_DragDrop(S
12、ource As Control, X As Single, Y As Single) Source.Move (X - Source.Width / 2), (Y - Source.Height / 2) End Sub Private Sub LabDrag_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) LabDrag.Drag 1 End Sub Private Sub LabDrag_MouseUp(Button As Integer, Shift As Integer, X As Si
13、ngle, Y As Single) LabDrag.Drag 2 End Sub,Visual Basic程序设计教程,20,键盘和鼠标都是用户与程序之间交互操作中的主要元素。键盘按键也可触发事件,编程者可以通过程序做必要的修改并增强键盘的功能。 VB提供了 KeyPress、KeyUp 和 KeyDown 三种键盘事件,用来发送键盘输入到窗体和其他控件以实现用户的交互,用户通过这些键盘事件的编程实现比键盘输入更多的操作功能。,6.4 键盘,Visual Basic程序设计教程,21,6.4.1 一般按键:KeyPress事件 用户的键盘在聚焦的对象上按键将产生一个KeyPress事件。Ke
14、yPress事件过程为: 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】在窗体上放
15、置一个文本框,然后编写一个程序,完成键盘输入的字符转换:输入大写转换为小写,输入为小写的字符转换为大写。 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码为: + St
16、r(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
17、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键的
18、状态的一个整数。(参见下一节),Visual Basic程序设计教程,25,6.4.2 特殊按键处理:KeyDown和KeyUp KeyDown和KeyUp事件经常用于:扩展的字符键如功能键、定位键、键盘修饰键和按键的组合、区别数字小键盘和常规数字键等。,Visual Basic程序设计教程,26,【例6-6】设计一个程序,在窗口上建立两个文本框,在右边的文本框中输入键盘的按键,在左边的文本框中显示这个键符号和对应的的代码。 Private Sub Form_Load() Show TxtDemo2.SetFocus End Sub 按键产生KeyDown事件过程 Private Sub Tx
19、tDemo2_KeyDown(KeyCode As Integer, Shift As Integer) TxtDemo1.Text = Chr(KeyCode) + 的代码为 TxtDemo1.Text = TxtDemo1.Text + Str$ ( KeyCode) TxtDemo2 = TxtDemo2.SetFocus End Sub,Visual Basic程序设计教程,27,在VB中,使用Shift参数保存Shift、Ctrl、Alt这三个键的状态,可以使用这些状态,和键盘的其他按键或者鼠标的Button按键进行组合。 表6.7 Shift参数关联的VB常量,6.5 组合:键盘S
20、hift、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
21、程序设计教程,30,6.6.1 什么是菜单,Visual Basic程序设计教程,31,6.6.2 使用菜单编辑器 在VB中,使用“菜单编辑器”设计菜单。有四种方法进入“菜单编辑器”。 (1)在VB IDE下,打开“工具”菜单,选择“菜单编辑器”。 (2)单击VB IDE菜单栏下方的工具按钮上的菜单编辑器, 图标为 。 (3)使用快捷键 Ctrl+E。 (4)在“工程”窗口使用快捷菜单,选择“菜单编辑器”。 菜单编辑器分为上下两个部分,上部为菜单控件属性,下部为菜单控件列表框。每建立一个菜单项,将被列在列表框中。,Visual Basic程序设计教程,32,1标题(Caption) 指定菜单项
22、要显示的标题文字。 2名称(Name) 这是作为菜单项控件的名称。 3索引(Index) 4快捷键(Short Cut) 在这个组合列表框中给出了VB预 先定义的各种快捷键,编程者可 以选择使用, 7复选(Checked) 是否置复选标志()。 8可用(Enabled) 9可见(Visible) 11分隔线 在菜单项的标题中,输入连接符“-”。,图6.8 菜单编辑器,Visual Basic程序设计教程,33,设计菜单的注意任务就是确定各个菜单项的名称以及要实现的内容,然后有条理地组织它们。我们设计应用程序应当尽量保持Windows应用程序的风格,界面上保持一致。,6.6.3 设计菜单,Vis
23、ual Basic程序设计教程,34,6.6.4 子菜单 严格意义上,在主菜单 下的各个菜单项都是 “子菜单”,而子菜单也可以有子菜单。在VB中,允许每个菜单项最多包含5级子菜单。 尽管子菜单有时是需要的,但还是要限制使用它们,因为多级菜单结构往往会使得用户查找命令功能变得复杂。,Visual Basic程序设计教程,35,6.6.5 菜单编程:菜单的Click事件 菜单事件只有一个,就是菜单的Click事件。除了分隔线外,每个菜单项都可以识别它对应的Click事件。 【例6-7】使用菜单设计一个完成二进制、十进制、八进制和十六进制数进行相互转换的程序。,Visual Basic程序设计教程,
24、36,Visual Basic程序设计教程,37,在程序执行的不同状态下,单击鼠标的右键,弹出一个菜单,供用户选择合适的操作命令,对于Windows应用程序而言,不但是一个友好的显示效果,更是一个快捷的方法,因此弹出式菜单也叫快捷菜单。,6.7 快捷方式:弹出式菜单,Visual Basic程序设计教程,38,6.7.1 设计弹出式菜单 【例6-8】设计一个将文本框的文本进行对齐操作的弹出式菜单。,Visual Basic程序设计教程,39,1使用菜单编辑器 在设计弹出式菜单时,主菜单项应设置“可见”属性为False(不选)。我们给这个弹出式菜单命名为PopMnu,下面有三个菜单项分别为“左对
25、齐”“居中”和“右对齐”。当在窗口单击右键则弹出的是三个子菜单项的菜单。,Visual Basic程序设计教程,40,2PopupMenu方法。 激活弹出式菜单使用PopupMenu方法。使用格式为: PopupMenu 菜单名称 或者使用调用的方法,格式为: Call PopupMenu (菜单名称),Visual Basic程序设计教程,41,3在何地使用弹出式菜单 菜单对象要通过菜单事件触发,但由于弹出式菜单是隐藏的,也就是它的属性被设置为不可见,因此就需要另外的事件触发,再用PopupMenu方法显示弹出式菜单后进入菜单事件。一般是鼠标右键被按下, “弹出”菜单 4对弹出式菜单的菜单项
26、进行菜单过程的编程,使之完成命令操作。,Visual Basic程序设计教程,42,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 Inte
27、ger, X As Single, Y As Single) If Button = vbRightButton Then PopupMenu PopMnu1 End Sub Private Sub MnuLeft_Click() TxtDemo.Alignment = 0 End Sub Private Sub MnuMiddle_Click() TxtDemo.Alignment = 2 End Sub Private Sub MnuRight_Click() TxtDemo.Alignment = 1 End Sub,Visual Basic程序设计教程,43,【例6-9】设计一个程序,捕捉鼠标和按键的全部操
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024家庭装修的合同模板
- 2024民间借贷担保合同模板
- 2024至2030年体操凳板项目投资价值分析报告
- 2024个人耐用消费品贷款合作的合同范本
- 2024电气设备维修、保养合同
- 2024年空调服项目可行性研究报告
- 2024至2030年中国金肤消袋去黑眼圈眼霜数据监测研究报告
- 2024至2030年中国桥式除污清洁抽湿台行业投资前景及策略咨询研究报告
- 2024至2030年中国智能型铸瓷机行业投资前景及策略咨询研究报告
- 2024中外货物买卖合同(CFR或CIF条款)
- 力朴素抗癌药理药效及其合成
- 球磨机设计说明书
- CRRT的原理PPT参考课件
- 餐饮美学餐饮空间格局设计
- 有效初三英语课堂教学ppt课件
- 幸福在哪里作文800字高中范文
- 五人制足球比赛记录表.doc
- 整式的乘法与因式分解所有知识点总结
- 现金流量表excel表格模板.doc
- 合同管理制度与流程图(附内控体系表)
- 《运动生理学》教案
评论
0/150
提交评论