第7章 键盘与鼠标事件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.设计程序界面 此程序共需要2个Form窗体,其中一个Form窗体的界面需 要添加1个TextBox控件、1个Label控件和3个CommandButton控 件,另一个Form窗体只需要添加1个Label控件,2个窗体界面 设计要求较为简单,对于各控件位置的放置和大小可以根据窗 体大小进行调节,程序界面设计设计也可以参考图 7-2所示样 例界面设计风格。
3.设置控件属性
4.编写程序代码
a.程序分析
在完成任务1“移动文本框”程序代码设计编写较为简单,程序加载 运行“移动文本框”时,当键盘按下任意键时,程序将触发文本框的 KeyDown事件,同时文本框将根据所按键的代码和方向,以一定的步长, 朝所指定的方向前进 。
b.代码分析
‘四个方向键实现文本框向四个方向移动 Private Sub Text1_KeyDown(KeyCode As Integer, If KeyCode = 37 Then Text1.Left = Text1.Left – 100 ElseIf KeyCode = 38 Then Text1.Top = Text1.Top - 100 ElseIf KeyCode = 39 Then Text1.Left = Text1.Left + 100 ElseIf KeyCode = 40 Then Text1.Top = Text1.Top + 100 End If End Sub Shift As Integer) „如按下的是向左的方向键 „文本框做左移运动 „文本框做上移运动 „文本框做右移运动 „文本框做下移运动
b.代码分析 ‘在通用模块中定义变量类型,使得在程序运行过程中,这些变量一直 有效 Dim n As Integer Dim max As Double Dim min As Double Dim sum As Double
„再程序窗体加载时,变量获取初值 Private Sub Form_Load() sum = 0 n = 0 max = -1000 min = 1000 End Sub
任务2:制作“口令验证”小程序,进一步学习键盘响应事件 1.任务分析 a.任务要求:当输入密码结束时 , 按鼠标单击“确定”按钮, 实现密码验证,但这样的方式不是十分简洁有效,本程序意 在当输入验证密码时,当键盘按回车键,要求程序将直接程 序运行焦点转移到“确定”按钮控件,当键盘再次按回车, 程序直接运行密码验证; b.本任务需要用到2个Form窗体,在第1个启动窗体Form1中有 1个TextBox控件、1个Label控件和3个CommandButton控件, 在第2个窗体中只有1个Label控件; c.程序设计要求,当“口令验证”程序运行加载时,在 TextBox控件属性文本框内输入密码,直接按回车键回车, 程序将进行密码验证,并报告验证结果;
„利用键盘事件统计分数 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 27 Then „ 输入ESC键直接退出程序 End ElseIf KeyAscii = 13 Then „输入回车键立即执行分数统计 n = n + 1 sum = sum + Val(Text1.Text) „对获取分数进行累加求和 If Val(Text1.Text) > max Then max = Val(Text1.Text) „求最大值 If Val(Text1.Text) < min Then min = Val(Text1.Text) „求最小值 Label2.Caption = "当前平均分" & sum / n „显示平均分 Label3.Caption = "当前最高分" & max „显示最高分 Label4.Caption = "当前最低分" & min „显示最低分 Text1.Text = "" „下一个分数输入前 End If End Sub
„ 当所输入密码为“ 123456” 时, „关闭Form1窗体 „加载Form2窗体 „否则弹出“口令错误”消息框
„当单击“重输”按钮,初始化输 „焦点转向在文本框
„获取键盘事件,焦点转向“确定”按钮控件 Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then „当键盘输入回车时,程序运行焦点转向“确 定”按钮 Command1.SetFocus Else End If End Sub
任务2:将编写“坦克运动”小程序,设计编写“坦克运动”程 序将进一步学习键盘响应事件。 1.任务分析 a.任务要求:用键盘方向键移动坦克,同时可以用按ctrl键可 以使坦克顺时针转向,按shift键可以使坦克逆时针转向; b.本任务需要用到1个TextBox控件和5个Image控件; c.程序设计要求,当“坦克运动”程序运行加载时,程序可 以用键盘方向键控制该坦克左右上下做前进运动。按ctrl键 可以使坦克顺时针转向,按 shift 键可以使坦克逆时针转向;
5.课后练习:
练习1:在理解掌握本课课业设计任务一、二的基础上,选择其中一个课业 设计任务,再次独立完成该程序的设计编写任务。 练习2:编写一个“会走路的史努比”小程序,程序设计要求史努比能够在 程 序窗体内按不同方向前进。
第26课
鼠标事件
任务1:制作“鼠标绘图”小程序,学习鼠标响应事件
1.任务分析 a.本任务需要用到1个CommonDialog控件、1个Frame控件、1个 PictureBox控件、2个CommandButton控件、4个Option控件; b.当“鼠标绘图”程序运行加载时,单击“设置颜色”按钮和 线宽,在PictureBox控件框内,任意按下鼠标左键或者右键, 移动鼠标,程序将画出鼠标移动轨迹; c.当单击“清除”按钮时,程序将清除PictureBox控件框的所有 画过的痕迹;
b.代码分析 ‘“确定”按钮程序代码 Private Sub Command1_Click() If Text1.Text = "123456" Then 程序将调用验证正确窗体 Unload Me form2.Show Else MsgBox "口令错误" End If End Sub „“重输”按钮程序代码 Private Sub Command2_Click() Text1.Text = "" 入文本框 Text1.S添加1个TextBox控件和5个Image控件,TextBox控 件用来捕捉按键的动作。5个Image控件,其中一个作为坦克运动对象控件, 另外4个作为上下左右四个方向的坦克控件图片动作。在设计这些控件时值 得注意的是,TextBox控件在画TextBox控件时,可以先扩大窗体界面,把 TextBox画在边界处。再缩小窗体,使TextBox控件为不可见。把4个作为上 下左右运动的Image控件属性设置为不可见,当在运动的坦克改变方向时, 从隐藏的4个Image控件取得Picture属性值,具体界面设计如图所示。
2.设计程序界面
此程序的界面需要添加1个TextBox控件和4个Label控件, 程序界面设计要求较为简单,对于各控件位置的放置和大小可 以根据窗体大小进行调节,程序界面设计设计也可以参考图 所示样例界面设计风格。
3.设置控件属性
4.编写程序代码
a.程序分析 根据在任务1“统计分数”程序设计要求,当在Text1文 本框内输入分数(数值),回车确定,程序将在不同的 Label控件显示所输入数值的平均值,最高分数和最低分数。 当然,在编写程序代码过程中需要设定变量,同时变量在 程序加载时获取初值。
3.设置控件属性 4.编写程序代码 a.程序分析 任务2“坦克运动”程序代码设计编写较为简单,当程 序加载运行“坦克运动”时,在键盘按下任意方向键时, 程序将触发KeyDown事件,坦克需要朝方向键所指定的方 向前进,同时当按下“Shift”键时,坦克需要按逆时针方向 依次调用不同方向的Image控件,当按下“Ctrl”键时,坦克 需要按顺调时针方向依次调用不同方向的Image控件。
第25课
键盘响应事件2
任务1:制作“统计分数”小程序,学习键盘响应事件
1.任务分析 a.任务要求:用键盘方向键移动该文本框; b.本任务需要用到1个TextBox控件; c.程序设计要求,当“移动文本框”程序运行加载时, 用键盘方向键可以任意移动该文本框;
2.设计程序界面
此程序的界面需要添加1个TextBox控件,程序界面设计 要求较为简单,只要合理设置该文本框的大小,程序界面设计 设计也可以参考图 所示样例界面设计风格。
清 华 版
第24课 键盘响应事件1
任务1:制作“统计分数”小程序,学习键盘响应事 件
1.任务分析 a.任务要求:输入每人的分数,以回车键结束每人的输 入;以Esc键结束程序; b.本任务需要用到1个TextBox控件和4个Label控件; c.程序设计要求,当“统计分数”程序运行加载时, 在 text1 文本框内输入任意分数(数值),每输入一 个分数(数值)回车,程序将在 3 个 Lebel 控件中分 别输出当前平均分,当前最高分和当前最低分;
3.设置控件属性
4.编写程序代码
a.程序分析 在完成任务2“口令验证”程序代码设计编写过程中, 需要对1个键盘事件和3个CommandButton控件进行分别编写 程序代码,其中键盘事件的代码编写,“确定”按钮的代 码编写和“重输”按钮代码的编写是互为连贯的,在程序 代码分析过程中将作为一个主体分析。
End If ElseIf KeyCode = 17 Then 'ctrl键顺时针转,与逆时针情况类似 If tank.Picture = leftt.Picture Then tank.Picture = up.Picture ElseIf tank.Picture = up.Picture Then tank.Picture = right.Picture ElseIf tank.Picture = right.Picture Then tank.Picture = down.Picture Else tank.Picture = leftt.Picture End If End If End Sub
5.课后练习:
练习1:在理解掌握本课课业设计任务一、二的基础上,选择其中一个课业 设计任务,再次独立完成该程序的设计编写任务。 2:用Click事件改写任务1和任务2程序,要求所设计程序完成同样的功 能。 3 :用VB编写一个“下雪界面”的程序。程序设计要求,当程序运行 加 载时,在窗口中单击鼠标,程序界面开始下雪,当鼠标移动时,鼠 标所到之处雪下的越大。
b.代码分析 Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 37 Then '向左方向键按下时 tank.Left = tank.Left - 100 '坦克朝左移动
ElseIf KeyCode = 38 Then '向上方向键按下时 tank.Top = tank.Top - 100 '坦克朝上移动 ElseIf KeyCode = 39 Then '向右方向键按下时 tank.Left = tank.Left + 100 '坦克朝右移动 ElseIf KeyCode = 40 Then '向下方向键按下时 tank.Top = tank.Top + 100 '坦克朝下移动 ElseIf KeyCode = 16 Then 'shift键逆时针转 If tank.Picture = leftt.Picture Then '头朝左,改为头朝下 tank.Picture = down.Picture ElseIf tank.Picture = up.Picture Then '头朝上,改为头朝左 tank.Picture = leftt.Picture ElseIf tank.Picture = right.Picture Then'头朝右,改为头朝上 tank.Picture = up.Picture Else '头朝下,改为头朝右 tank.Picture = right.Picture