《visualbasic课件第四章.ppt》由会员分享,可在线阅读,更多相关《visualbasic课件第四章.ppt(79页珍藏版)》请在三一办公上搜索。
1、第4章 界面设计,学习目标:掌握窗体设计 掌握标准控件的应用 掌握多重窗体的设计与应用 掌握响应鼠标与键盘事件 掌握菜单的设计与应用,第4章 界面设计,教学内容:4.1 窗体与控件应用基础 4.2 常用标准控件及应用案例 4.3 多窗体程序的设计与应用 4.4 VB工程管理 4.5 鼠标与键盘事件 4.6 菜单的设计与应用,4.1 应用基础控件的基本操作,1.在窗体上添加控件 单击工具箱中的图标,在窗体上拖放出所需控件 双击工具箱中的图标(窗体中央出现一个缺省大小的控件),根据需要移动控件或更改控件的大小。2.选中窗体上的控件 选中一个控件:单击选中多个控件:Ctrl或Shift+单击用鼠标拖
2、放出一个矩形框,返回目录,4.1 应用基础控件的基本操作,3.改变控件大小 拖动选中控件四周的8个控制点修改Width和Height的属性值 4.删除、移动控件 删除:选中后按Delete键 移动:拖动选中的控件修改Top和Left的属性值,返回目录,4.1 应用基础控件的基本操作,4.复制控件 选中控件“复制”“粘贴”,返回目录,控件数组由一组相同类型的控件组成,名称(Name属性)、属性和事件过程都相同。通过Index 属性可区分控件数组中的元素。如果要从控件数组中撤消一个控件,需改变该控件的Name属性设置,并删除Index属性设置。,4.1 应用基础窗体和控件的常用属性,返回目录,4.
3、1 应用基础窗体的属性、事件与方法,1.窗体的属性 除Name、Caption、Font、Enabled、Visible、BackColor、ForeColor、FillColor属性,常用属性还有:Appearance:设置窗体运行时是否以3D效果显示 BorderStyle:设置窗体的边框样式 ControlBox:设置窗口是否显示控制菜单按钮 Icon:设置窗体最小化时显示的图标 Height/Width:决定窗体的初始大小 Left/Top:根据屏幕的左上角确定窗体的位置 MaxButton/MinButton:是否具有“最大化”/“最小化”按钮 ShowInTaskbar:窗体运行时
4、是否出现在任务栏中,返回目录,4.1 应用基础窗体的属性、事件与方法,2.窗体的常用事件Load/Unload:装入/卸载Click:单击Activate/Deactivate:激活/非激活Resize:尺寸改变Initialize:初始化(在Load事件后发生)KeyPress:按键 MouseDown/MouseUp/MouseOver:鼠标按下/移动/松开,返回目录,例如,当A窗体变成活动窗体时,A窗体发生Activate事件;当另一个窗体被激活时,A窗体发生Deactivate事件。,4.1 应用基础窗体的属性、事件与方法,3.窗体的常用方法 方法:对象要完成的操作(特殊子程序)调用格
5、式:对象名称.Print:打印文本Show:显示窗体Hide:隐藏窗体(不是卸载)Cls:清除运行时窗体中生成的图形和文本,返回目录,4.2 常用标准控件1,标准控件由系统提供,又称为内部控件。1.命令按钮-1 Caption属性:设置显示在按钮上的文本(标题),返回目录,快捷键作用:Alt+S 单击“开始”按钮Alt+X 单击“Exit”按钮,4.2 常用标准控件1,1.命令按钮-2 Default属性:设置缺省的命令按钮。若设置为True,按回车键相当于单击该按钮。Cancel属性:设置缺省的取消按钮。若设置为True,按Esc键相当于单击该按钮。Index属性:设置按钮在控件数组中的编号
6、。命令按钮的默认事件是Click(单击),不支持双击事件。,返回目录,4.2 常用标准控件1,2.标签 Caption属性:设置在标签控件中显示的文本Alignment属性:设置标签中文本的对齐方式(0-左对齐,1-右对齐,2-居中)BackStyle属性:设置标签控件背景是否透明(0-透明,1-不透明),返回目录,例,标签“用户名称”和“密码”是透明的,标签控件主要用来显示说明文字,因此一般不对其进事件处理。,4.2 常用标准控件1,3.文本框-常用属性 Text:设置文本框中显示的内容 MultiLines:设置是否能输入或显示多行文本 取值True或 False(缺省值)ScrollBa
7、rs:设置多行文本框中是否出现滚动条(0-没有,1-水平,2-垂直,3-水平和垂直)Locked:设置是否允许用户编辑文本框中的文本 取值True或 False(缺省值)Passwordchar:设置密码字符 若MultiLine属性为True,则PasswordChar属性无效,返回目录,4.2 常用标准控件1,3.文本框-常用事件 Change(默认事件):改变文本框内容时发生KeyPress:在文本框中按键盘上的键时发生 Lostfocus:文本框失去焦点时发生Gotfocus:文本框获得焦点时发生 焦点是接收用户鼠标或键盘输入的能力。4.框架可用于对其他控件进行分组常用属性是Capti
8、on,用于设置框架的标题文本可先画出框架,再将其它控件画到框架中;或者“剪切”框架外的控件,“粘贴”到框架中,返回目录,4.2 常用标准控件1,例4.1 彩票开奖器 Private Sub Command1_Click(Index As Integer)Command1(Index).Enabled=False 使点击过的按钮不可用 Randomize(Time)Label1(Index).Caption=Int(Rnd*10)对应标签显示随机数 Label1(Index).FontSize=24 Label1(Index).ForeColor=RGB(255,0,0)End Sub,返回目录
9、,4.2 常用标准控件1,例4.1 彩票开奖器 Private Sub Cmd_Redo_Click()点击ReDo按钮 For i=0 To 3 Command1(i).Enabled=True Label1(i).Caption=Next iEnd SubPrivate Sub Cmd_Exit_Click()点击Exit按钮 EndEnd Sub,返回目录,4.2 常用标准控件1,例4.2 同步显示 Private Sub Text1_Change()Text2.Text=Text1.TextEnd SubPrivate Sub Command1_Click()重新输入 Text1.Te
10、xt=Text1.SetFocusEnd Sub,返回目录,两个文本框:MultiLine设为True ScrollBars设为2,4.2 常用标准控件1,例4.3 考生登录If Len(Txtcode.Text)8 Then Lblsm.Caption=准考证号必须输入,长度8位!Txtcode.SetFocusElseIf Len(Txtname.Text)=0 Then Lblsm.Caption=考生姓名必须输入 Txtname.SetFocus:Exit Sub ElseIf Len(TxtSeat.Text)=0 Then Lblsm.Caption=座位号必须输入 TxtSeat
11、.SetFocus:Exit SubEnd IfLblsm.Caption=:MsgBox 正确,返回目录,“正确无误”按钮的Click事件响应代码:各项信息均正确输入后弹出一信息框。,4.2 常用标准控件1,例4.3 考生登录Private Sub Txtcode_LostFocus()If Len(Txtcode.Text)8 Then Lblsm.Caption=准考证号必须输入,长度8位!Txtcode.SetFocus ElseIf Not IsNumeric(Txtcode.Text)Then Lblsm.Caption=准考证号必须是数字!Txtcode.SetFocus Els
12、e Lblsm.Caption=End IfEnd Sub,返回目录,“准考证号”文本框失去焦点时的事件响应代码:检查是否输入8位数字。,IsNumeric()是判断数字函数,4.2 常用标准控件1,例4.3 考生登录Private Sub Txtname_LostFocus()If Len(Txtcode.Text)8 Or Not IsNumeric(Txtcode.Text)Then Txtcode.SetFocus ElseIf Len(Txtname.Text)=0 Then Lblsm.Caption=考生姓名必须输入!Txtname.SetFocus Else Lblsm.Cap
13、tion=End IfEnd Sub,返回目录,“姓名”文本框失去焦点时的事件响应代码:检查姓名是否输入。,4.2 常用标准控件1,例4.3 考生登录Private Sub TxtSeat_LostFocus()If Len(Txtname.Text)=0 Then Txtname.SetFocus ElseIf Len(TxtSeat.Text)=0 Then Lblsm.Caption=座位号必须输入!TxtSeat.SetFocus ElseIf Not IsNumeric(TxtSeat.Text)Then Lblsm.Caption=座位号必须是数字 TxtSeat.SetFocus
14、 Else Lblsm.Caption=End IfEnd Sub,返回目录,“座位号”文本框失去焦点时的事件响应代码:检查座位号是否输入,是否是数字。,4.2 常用标准控件2,1.单选按钮 常用属性是Caption和Value。Value属性表示控件的状态,缺省值为False(未被选中)。常用事件是Click 缺省时,直接放到窗体上的所有单选按钮自动构成一组。2.复选框常用属性是Caption和Value。Value属性表示控件的状态:0-未被选中(缺省值),1-选定 2 灰色复选框的主要事件也是Click,返回目录,4.2 常用标准控件2,3.滚动条 和 Value属性:滚动框在滚动条中的
15、当前位置 Max和Min属性:Value的最大值和最小值。Max的缺省值为32767,Min的缺省值为0 LargeChange和SmallChange:滚动条的主要事件是:Change:滚动框的位置改变时发生 Scroll:在拖动滚动条上的滚动框时发生,返回目录,4.2 常用标准控件2,4.定时器 定时器是应用程序中控制定时发生事件的控件。常用属性:Enabled:设置定时器是否可用,缺省为True Interval:设置定时器事件之间所间隔的毫秒数,缺省值为0(Timer控件无效),最大为65535 事件:Timer:以Interval属性指定的时间间隔发生(Enabled属性设置为Tru
16、e)注:定时器控件只在设计时出现在窗体上,返回目录,4.2 常用标准控件2,例4.4 简易计算器 Private Sub Command1_Click()计算 a=Val(Text1.Text):b=Val(Text2.Text)If Option1 Then Text3.Text=a+b If Option2 Then Text3.Text=a-b If Option3 Then Text3.Text=a*b If Option4 Then Text3.Text=a/b 思考:b=0怎么办?End SubPrivate Sub Command2_Click()清除 Text1.Text=:T
17、ext2.Text=:Text3.Text=End Sub,返回目录,4.2 常用标准控件2,例4.4 简易计算器,返回目录,设置是否斜体显示,设置是否粗体显示,4.2 常用标准控件2,例4.5 求阶乘,返回目录,4.2 常用标准控件2,例4.5 求阶乘Private Sub Timer1_Timer()n=HScroll1.Value:nj=1 For i=1 To n 该循环计算 n!nj=nj*i Next Cls:Form1.FontSize=18 Label1.Caption=Str(n)+!=:Label1.Caption=nj If HScroll1.Value 20 Then
18、HScroll1.Value=HScroll1.Value+1 Else HScroll1.Value=1 End IfEnd Sub,返回目录,Private Sub Command1_Click()Timer1.Enabled=TrueEnd Sub,Private Sub Command2_Click()Timer1.Enabled=FalseEnd Sub,4.2 常用标准控件3,1.列表框 常用特定属性List:项目数组引用形式:列表框名称.List(index)第1项的index为0,最后一项的index为ListCount-1ListCount:项目个数ListIndex:当前所
19、选项目的索引号第1项为0,最后一项为ListCount-1Sorted:是否按字母顺序排序(默认false)常用事件:Click、DblClick,返回目录,4.2 列表框和组合框,列表框各主要属性的值:List1.ListIndex=3(下标从0开始的)List1.ListCount=5 List1.Selected(3)=True,其余为False。List1.Sorted=False,没有排序。List1.Text 为“cox”,与List1.List(List1.ListIndex)相等,List1,列表框各主要属性的值:List1.ListIndex=0 List1.ListCoun
20、t=8 List1.Selected(0)=True其余为False。List1.Sorted=False List1.Text 为“李宁”,Combo1,4.2 常用标准控件3,1.列表框 常用方法AddItem:将项目添加到列表框。列表框名称.AddItem item,index item:项目的字符串表达式 index:插入新项目的位置RemoveItem:从列表框中删除项目 列表框名称.RemoveItem index index:指定删除的项目位置序号Clear:删除列表框中的所有项目 列表框名称.Clear,返回目录,4.2 常用标准控件3,2.组合框 组合框文本框列表框常用属性、
21、事件和方法与列表框相同 设置Style属性,可决定组合框的样式(三种):0:下拉式组合框(缺省值)含文本框和下拉式列表1:简单组合框 含文本框和不能下拉的列表 界面设计时须将控件绘制得大一些)2:下拉式列表框 仅允许从下拉式列表中选择项目,返回目录,4.2 常用标准控件3,例4.6 对列表框中的项目进行添加、删除和统计 设计界面:姓名文本框:TextXM显示当前人数的标签:Label2“添加”按钮:CommandAdd Default属性为True“删除”按钮:CommandDelete Enabled属性为False列表框:List1,返回目录,4.2 常用标准控件3,例4.6 对列表框中的
22、项目进行添加、删除和统计 Private Sub CommandAdd_Click()单击“添加”按钮 If TextXM.Text Then List1.AddItem TextXM.Text Label2.Caption=List1.ListCount 显示当前人数 TextXM.Text=End If TextXM.SetFocusEnd Sub,返回目录,4.2 常用标准控件3,例4.6 对列表框中的项目进行添加、删除和统计 Private Sub List1_Click()单击列表框中的项目 CommandDelete.Enabled=True 使“删除”按钮可用End SubPri
23、vate Sub CommandDelete_Click()单击“删除”按钮 I=List1.ListIndex 获得当前所选项目的索引号 List1.RemoveItem I Label2.Caption=List1.ListCount CommandDelete.Enabled=False End Sub,返回目录,4.2 常用标准控件3,例4.7 显示、新增、删除、清空学生记录 设计界面:学号文本框:Txt_id姓名文本框:Txt_xm班级文本框:Txt_bj学生记录列表框:Lst_data“新增”按钮:Cmd_add Default属性为True“删除”按钮:Cmd_dele“清空”按
24、钮:Cmd_clear,返回目录,4.2 常用标准控件3,例4.7 显示、新增、删除、清空学生记录“通用”段声明自定义数据类型及模块级变量 Private Type student id As String*6 xm As String bj As String End Type Dim stud(50)As student Dim num As Integer Private Sub Form_Load()num=0 统计记录数 Cmd_dele.Enabled=False End Sub,返回目录,4.2 常用标准控件3,例4.7 显示、新增、删除、清空学生记录 Private Sub C
25、md_add_Click()单击“新增”按钮 Lst_data.AddItem Txt_id+Space(5)+Txt_xm+Space(5)+Txt_bj num=num+1 定义类型的变量,通过变量名.成员名访问变量中的成员 With stud(num).id=Txt_id.Text.xm=Txt_xm.Text.bj=Txt_bj.Text End With If num=1 Then Cmd_dele.Enabled=True Txt_id.SetFocus Txt_id=:Txt_xm=:Txt_bj=End Sub,返回目录,4.2 常用标准控件3,例4.7 显示、新增、删除、清空
26、学生记录 Private Sub Cmd_dele_Click()单击“删除”按钮 Dim n As Integer Lst_data.RemoveItem Lst_data.ListIndex For n=Lst_data.ListIndex+1 To num-1 移位覆盖 stud(n).id=stud(n+1).id stud(n).xm=stud(n+1).xm stud(n).bj=stud(n+1).bj Next num=num-1 记录总数-1 If num=0 Then Cmd_dele.Enabled=False Txt_id=:Txt_xm=:Txt_bj=End Sub
27、,返回目录,4.2 常用标准控件3,例4.7 显示、新增、删除、清空学生记录 Private Sub Cmd_clear_Click()单击“清空”按钮 Txt_id=:Txt_xm=:Txt_bj=Txt_id.SetFocusEnd SubPrivate Sub Lst_data_Click()单击列表框项目 Dim n As Integer n=Lst_data.ListIndex With stud(n+1)Txt_id.Text=.id Txt_xm.Text=.xm Txt_bj.Text=.bj End WithEnd Sub,返回目录,4.2 常用标准控件4,1.图片框和图像框
28、(1)图片框(PictureBox)和图像控件(Image)的异同 都能用来显示图形或图片:位图(.bmp)、图标(.ico)、图元(.wmf)、JPEG或GIF等 主要区别:图片框中可以包含其它控件,而图像框不能。图片框可支持各种图形方法和打印方法,而图像框不能。图像框比图片框占用的内存少,显示速度快。,返回目录,4.2 常用标准控件4,(2)将图片加载到窗体、图片框或图像框中 窗体设计时设置Picture属性 或“复制”/“剪切”图像“粘贴”如果要取消图片,将Picture属性重新设置为(None)程序代码中 用LoadPicture函数,例如:Form1.Picture=LoadPict
29、ure(C:windowsbackgrnd.gif)Form1.Picture=LoadPicture()清除图片复制其它对象的图片,例如:Picture1.Picture=Image1.Picture,返回目录,4.2 常用标准控件4,(3)调整图片大小图片框:AutoSize属性设置控件是否按装入的图片大小自动调整尺寸,缺省值False。但图元文件(.wmf)例外,AutoSize为False时,装入的图形会自动调整大小以适应图片框。图像框:Stretch属性为False(缺省值),控件自动调整大小以适应装载的图形的尺寸;Stretch属性为True,则加载的图形自动调整大小以适应控件,即
30、,调整图像框可实现图形的放大和缩小。窗体:不随装载的图片大小而自动改变,图片大于窗体的部分将被裁剪掉。,返回目录,4.2 常用标准控件4,(4)控件的边框样式 BordeStyle属性:0(无边框)、1(有边框)图片框:BordeStyle属性缺省值为1 图像框:BordeStyle属性缺省值为0,返回目录,4.2 常用标准控件4,例4.8 图片框和图像框应用示例 Image1的属性设置:Stretch为TrueBordeStyle为1Height和Width均为1800 在窗体的通用段声明模块变量:Dim n As Integer n记录图片框中的输出项数 Private Sub Form_
31、Load()n=0 n赋初值 End Sub,返回目录,4.2 常用标准控件4,单击“放大”按钮Private Sub Command1_Click()Image1.Width=Image1.Width*1.25 Image1.Height=Image1.Height*1.25 Picture1.Print 放大图片:n=n+1 If n=10 Then Picture1.Cls:n=0End Sub单击“缩小”按钮Private Sub Command2_Click()Image1.Width=Image1.Width*0.75 Image1.Height=Image1.Height*0.7
32、5 Picture1.Print 缩小图片:n=n+1 If n=10 Then Picture1.Cls:n=0End Sub,返回目录,4.2 常用标准控件4,Private Sub Command3_Click()单击“还原”按钮 Picture1.Cls Image1.Height=1800 Image1.Width=1800End Sub,返回目录,4.2 常用标准控件4,2.直线控件 功能:在窗体、框架或图片框中绘制线条 移动和调整线条大小 设置X1、X2、Y1、Y2属性 其中,X1、Y1左端点坐标,X2、Y2右端点坐标 设置线条的颜色和样式 设置BoderColor和BordeS
33、tyle属性 注意:若BorderStyle=0,BorderColor属性不起作用 设置线条的宽度 设置BorderWidth属性,返回目录,4.2 常用标准控件4,3.形状控件 功能:在窗体上绘制有规则的图形 Shape属性设置控件的具体形状,返回目录,4.2 常用标准控件5,执行“工程部件”命令可添加其他外部控件 例4.9 DTPicker控件应用(1)添加DTPicker控件:,返回目录,4.2 常用标准控件5,例4.9 DTPicker控件应用(2)窗体设计:(3)“输出”按钮的Click事件过程:Private Sub Command1_Click()MsgBox 你的订票日期是&
34、DTPicker1.Value,输出 End Sub,返回目录,4.3 多窗体程序的设计与应用,1.添加窗体“工程添加窗体”2.显示或隐藏窗体 显示指定窗体 Object.Show Style Object窗体名称 Style显示模式(0、1)隐藏指定窗体 Object.Hide,返回目录,4.3 多窗体程序的设计与应用,3.设置启动窗体默认第一个窗体(Form1)为启动窗体改变启动窗体:“工程工程属性”,返回目录,4.3 多窗体程序的设计与应用,4.应用案例:设计试题库管理程序ctk.vbp的初步框架,返回目录,4.3 多窗体程序的设计与应用,(1)创建用户登录窗体Frmdl 新建工程:窗体
35、保存为Frmdl.frm,工程保存为ctk.vbp。窗体设计:下面4个按钮为一控件数组Cmdml(0)Cmdml(3)除“退出”按钮外,其它三个按钮的Enabled属性设为False密码文本框Txtcode的PasswordChar属性设为“*”底部提示标签Lblsm的Caption属性设为空,返回目录,4.3 多窗体程序的设计与应用,程序设计:Dim cs As Integer cs记录出错次数Private Sub Cmdml_Click(Index As Integer)Select Case Index Case 0:单击题库管理按钮 Frmsele.Show 1 Case 1:单击自
36、动选题按钮 Frmxt.Show 1 Case 2:单击制作考盘按钮 Frmcopy.Show 1 Case 3:单击退出按钮 End End SelectEnd Sub,返回目录,控件数组按钮的Click事件响应代码:点击后可打开相应的窗体,4.3 多窗体程序的设计与应用,Private Sub Cmgqd_Click()单击“确定”按钮 If cs TEACHER Then Lblsm.Caption=用户名错误,请重新输入!cs=cs+1:TxtName.SetFocus ElseIf(Txtcode.Text)kaoshi Then Lblsm.Caption=密码错误,请重新输入!c
37、s=cs+1:Txtcode.SetFocus Else 用户名和密码均正确的情况 Lblsm.Caption=:Cmdml(0).Enabled=True Cmdml(1).Enabled=True:Cmdml(2).Enabled=True End If Else Lblsm.Caption=已连错三次,请退出!:Cmdml(3).SetFocus End IfEnd Sub,返回目录,4.3 多窗体程序的设计与应用,(2)添加题库管理窗体Frmsele“工程添加窗体”,新建一个窗体,保存为Frmsele.frm。在该窗体中添加一个命令按钮,编写Click事件响应代码:Private Su
38、b Cmd_exit_Click()Unload Me End Sub(3)仿上,添加窗体Frmxz.frm(4)仿上,添加窗体Frmcopy.frm,返回目录,4.4 VB工程管理工程的组成,VB工程包含多种类型的文件 其中最常用的文件是:工程文件 包含与该工程有关的全部文件、对象以及所设置的环境选项的信息(见教材图5-30),扩展名.vbp 窗体文件 包含窗体及其控件有关属性的文本描述、常量或变量的声明、以及窗体内的过程代码等(见教材图5-31),扩展名为.frm 若窗体中对象的数据含有二进制属性,保存该窗体时将自动生成同名的二进制数据文件,扩展名为.frx 标准模块文件 通常用来定义供其
39、他窗体或模块引用的全局常量、变量、过程等,扩展名为.bas,返回目录,4.4 VB工程管理工程的基本操作,1.新建、打开和保存工程新建工程启动VB时:“新建工程”对话框的“新建”选项卡VB窗口中:“文件新建工程”打开工程启动VB时:“现存”、“新建”VB窗口中:“文件打开工程”保存工程单击“保存工程”按钮“文件保存工程”“文件工程另存为”,返回目录,4.4 VB工程管理工程的基本操作,2.工程中添加、移除和保存文件 添加指定类型的文件:“工程添加”删除选定的文件:“工程移除”保存选定的文件:“文件保存”另存选定的文件:“文件另存为”注:上述操作可用快捷菜单中的相关命令在当前工程中添加现存的文件
40、时(例如,添加其他工程中的窗体),并不是添加该文件的副本,而只是简单地在工程中包含对该文件的引用。,返回目录,4.5 鼠标与键盘事件鼠标事件,1.三个基本的鼠标事件 MouseDown、MouseUp、MouseMove MouseDown和MouseUp Private Sub 对象名称_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)Private Sub 对象名称_MouseUp(Button As Integer,Shift As Integer,X As Single,Y As Single)其
41、中:Button:返回一个整数(1左、2右、4中)Shift:返回一个整数(见教材表4.4)代表Shift、Ctrl或Alt键的状态X、Y:返回当前鼠标指针的水平坐标和垂直坐标,返回目录,4.5 鼠标与键盘事件鼠标事件,例4.10 用Move方法移动窗体上的图片:窗体上按下左键,图片框的左上角移到当前鼠标指针所在位置;按下右键,则图片框的中心移到当前鼠标指针所在位置。Private Sub Form_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)If Button=1 Then 按下左键 Picture
42、1.Move X,Y End If If Button=2 Then 按下右键 Picture1.Move(X-Picture1.Width/2),(Y-Picture1.Height/2)End IfEnd Sub,返回目录,4.5 鼠标与键盘事件鼠标事件,MouseMove Private Sub对象名称_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)除Button参数(见教材表4.5),其余参数的含义与MouseDown和MouseUp的相同 例4.11让图片框中的文本框跟随鼠标指针移动 Priv
43、ate Sub Picture1_MouseMove(Button As Integer,Shift As Integer,X As Single,Y As Single)Text1.Text=&X&,&Y 显示当前鼠标位置 Text1.Left=X Text1.Top=YEnd Sub,返回目录,4.5 鼠标与键盘事件鼠标事件,2.拖放操作(DragDrop)若干术语 Drag:按下鼠标按钮并移动对象的操作 Drop:到达目的地后释放鼠标按钮的操作 源:被拖动的对象 目标:是源控件放下或经过的对象只有目标对象能响应DragDrop或DragOver事件,返回目录,4.5 鼠标与键盘事件鼠标事
44、件,DragMode属性:设置拖动模式DragMode=1(vbAutomatic),自动模式DragMode=0(vbManual),手工模式 DragDrop事件 拖动一个控件到目的位置并释放鼠标按钮时,在目标对象上(不是被拖的对象)触发DragDrop事件Private Sub 对象名称_DragDrop(Source As Control,X As Single,Y As Single)其中,Source代表被拖动的控件,X和Y表示鼠标指针的当前坐标位置。,返回目录,4.5 鼠标与键盘事件鼠标事件,DragOver事件 拖动控件时,在目标对象上触发DragOver事件 Private
45、Sub Form_DragOver(Source As Control,X As Single,Y As Single,State As Single)其中,Source、X和Y参数的含义同DragDrop事件,State参数表示被拖控件与目标对象之间的相对位置关系(见教材表4.6)Drag方法 用于启动或停止手工拖动:对象.Drag 动作参数有三种取值,见教材表4.7。,返回目录,4.5 鼠标与键盘事件鼠标事件,例4.12 实现在窗体上随意拖动图片框或文本框 Private Sub Form_Load()Picture1.DragMode=1 设置图片框控件为自动拖动模式 Text1.Dra
46、gMode=1 设置文本框控件为自动拖动模式End SubPrivate Sub Form_DragDrop(Source As Control,X As Single,Y As Single)Source.Move X,Y 将源控件移到鼠标指针所指新位置End Sub,返回目录,4.5 鼠标与键盘事件键盘事件,1.KeyPress事件 按下键盘上与ASCII字符对应的键时触发KeyPress事件 Private Sub 对象名称_KeyPress(KeyAscii As Integer)参数KeyAscii返回按键的ASCII代码值KeyAscii设为0,则对象无法接收用户的输入例如,以下的
47、事件过程只允许在Text1中输入数字字符09 Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii 57 Then KeyAscii=0 End IfEnd Sub,返回目录,4.5 鼠标与键盘事件键盘事件,2.KeyDown和KeyUp事件 在按下/释放键时触发 Private Sub对象名称_KeyDown(KeyCode As Integer,Shift As Integer)Private Sub对象名称_KeyUp(KeyCode As Integer,Shift As Integer)KeyCode参数返回所按物理键的
48、代码值;Shift参数返回一个整数值,指示Shift、Ctrl和Alt键的状态,见教材表4.4 KeyPress事件与KeyDown/KeyUp事件的区别 前者返回的是字符的ASCII码,后者返回的是“键”的代码 例如,当按“A”和“a”时将返回同一个KeyCode值,而对KeyPress来说,按“A”和“a”得到的ASCII码是不一样的,返回目录,vbKeyA 65,“A”65“a”97,4.5 鼠标与键盘事件键盘事件,例4.13 模拟打字机Private Sub Form_Load()Form1.KeyPreview=TrueEnd Sub 使窗体优先响应键盘事件Private Sub F
49、orm_KeyDown(KeyCode As Integer,Shift As Integer)If KeyCode=vbKeyC And Shift=2 Then Unload MeEnd Sub 按Ctrl+C键可关闭窗体 Private Sub Text1_KeyPress(KeyAscii As Integer)If KeyAscii=13 Then ASCII码为13表示回车 List1.AddItem Text1.Text Text1.Text=End IfEnd Sub,返回目录,在文本框中输入,回车后输入的内容显示在列表框中,4.5 鼠标与键盘事件键盘事件,例4.14 用户名称
50、可从组合框中选择;在“用户名称”框中按回车键,“密码”框获得焦点;在“密码”框中按回车键,等价于单击“确定”按钮;单击“确定”按钮后,若密码正确,则打开有待建设的主窗体;单击“取消”按钮结束程序。,返回目录,4.6 菜单的设计与应用相关概念,1.菜单的类型 下拉菜单:常以菜单栏的形式出现在标题栏下面 弹出菜单(快捷菜单):独立于菜单栏而显示在窗体上的浮动菜单,其菜单项取决于按下鼠标右键时指针所处的位置。2.VB中的菜单控件 菜单和菜单项均看作是菜单控件 菜单控件两个最重要的属性名称(Name):程序代码中用来引用菜单控件标题(Caption):出现在控件上的文本 菜单控件只响应Click事件,