《窗体与常用控件》PPT课件.ppt
第5章 窗体与常用控件,重要知识点:窗体相关操作常用控件的属性、事件和方法常用鼠标、键盘事件,学习内容,控件相关知识窗体相关知识基础控件选择控件与分组控件列表控件计时器、图片框和选项卡控件鼠标和键盘事件,学习目的,初步掌握VB.NET程序界面设计的基本方法。,控件(Control)和工具箱,控件是构成用户界面的基本元素。添加控件的2种方法:1.单击工具箱中的控件图标,然后在窗体的适当位置拖放出一定大小的控件。2.双击工具箱中的控件图标,在窗体的左上角出现一个默认大小的控件。,控件的基本操作,选定控件调整控件大小与位置:选中控件|拖拽 修改控件Size属性和Location属性复制、删除控件,名称(Name)属性和命名约定,每个控件必须有Name属性命名一般可采用“匈牙利表示法”具体见教材P123表5-1,窗 体(Form),窗体是创建VB.NET应用程序的“平台”。窗体是程序运行时与用户交互的“窗口”。应用程序用户界面由窗体和控件共同组成。每个应用程序至少要有一个窗体。创建Windows应用程序时,会同步创建一个Name为Form1的窗体。,窗体基本操作,添加/删除窗体:项目|添加Windows窗体 解决方案资源管理器|右键窗体名|删除打开窗体:解决方案资源管理器|双击窗体名调整窗体大小:选中窗体|拖拽 修改窗体Size属性,窗体常用属性,NameTextFontBackColor、ForeColorControlBoxMaximizeBox、MinimizeBoxFormBorderStyleLocationStartPosition,窗体常用事件,LoadActivatedClickResizeKeyDown、KeyUp、KeyPressMouseDown、MouseUp、MouseMove,窗体常用方法,Show()Hide()Close(),程序中调用方法的语法格式:对象名.方法名(参数),属性决定窗体的外观,方法体现窗体的行为,事件定义窗体与用户的交互。,基础控件Label,功能:通常用来显示固定的说明文字。常用属性Text:标签中显示的文本,最长为1024字节。可以在程序运行时通过代码设置,如:Label1.Text=输入有误!AutoSize:是否自动调整标签的大小以适应文本的度,默认为TrueTextAlign:标签中文本的对齐方式Font:标签中文本的字体、字形和字号BackColor、ForeColor:标签的背景色和前景色Visible:标签在程序运行时是否可见,默认为True,基础控件TextBox,功能:显示文本和接收输入的文本。常用属性Text:文本框中显示的内容Font:文本框中文本的字体、字形和字号BackColor、ForeColor:文本框的背景色和前景色MaxLength:文本框中最多可容纳的字符(汉字)数PasswordChar:口令或密码字符ReadOnly:文本框显示的内容是否为只读,默认为FalseMultiline:文本框控件是否能够接受和显示多行文本,默认为FalseScrollBars:多行文本框中是否出现滚动条,默认为None,基础控件TextBox,常用事件TextChanged:改变文本框内容时触发该事件GotFocus:文本框获得焦点时触发该事件LostFocus:文本框失去焦点时触发该事件,Tips:焦点:接收用户鼠标或键盘输入的能力。利用Focus()函数可获得焦点。例如:TextBox1.Focus(),基础控件Button,功能:响应Click事件过程。常用属性Text:按钮上显示的文本Font:按钮上文本的字体、字形和字号BackColor、ForeColor:按钮的背景色和前景色FlatStyle:按钮的外观,默认为Standard(三维外观)Enabled:设置按钮是否可用,默认为True,Tips:通过Text属性给按钮定义快捷键按钮文本为中文,例如:开始(&S),快捷键为Alt+S按钮文本为英文,例如:&Exit,快捷键为Alt+E,【例5.1】设计一个数制转换程序,要求:单击“转换”按钮或按Alt+C组合键,可将输入的十进制整数转换为十六进制整数,同时该按钮变为无效;在上面的文本框中输入数据时,可自动将转换结果文本框清空,同时使“转换”按钮变为有效;单击“退出”按钮或按Alt+E组合键,可关闭窗体(即退出程序)。,界面设计:窗体上添加2个标签、2个文本框和2个命令按钮属性设置:如下表,Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click Dim x As Integer x=CInt(txt10.Text)txt16.Text=Hex(x)Button1.Enabled=False End Sub Private Sub txt10_TextChanged(ByVal sender As Object,ByVal e As System.EventArgs)Handles txt10.TextChanged txt16.Text=Button1.Enabled=True End Sub Private Sub Button2_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles Button2.Click Me.Close()End SubEnd Class,3.编写事件过程:,将文本框中的数据转换为整型,利用Hex()函数将十进制数转换为十六进制数,文本框内容改变时触发,拓展思考,如果输入的不是数值类型,怎么处理?解决思路:在进制转换前先判断输入内容是否合法。如果合法就转换,不合法就给出提示并要求重新输入。要点:IsNumeric()函数和IF分支语句。重新输入时txt10文本框应自动清空。解决方法:txt10.Text=“”清空后txt10文本框应自动获得焦点解决方法:txt10.Focus(),Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click Dim x As IntegerIf IsNumeric(x)=True Then x=CInt(txt10.Text)txt16.Text=Hex(x)Button1.Enabled=FalseElseMsgBox(“您输入的数据不合法,请重新输入!”)txt10.Text=“”txt10.Focus()End If End Sub,将“转换”按钮的Click事件代码修改为:,【例5.2】设计一个登录窗体(图1),要求:单击“登录”按钮后出现图2所示对话框;若用户名或密码有一个为空,则出现图3所示对话框;单击“退出”按钮可关闭窗体(即退出程序)。,图1,图2,图3,界面设计:窗体上添加2个标签、2个文本框和2个命令按钮属性设置:如下表,3.编写事件过程:,Public Class Form1 Private Sub btn登录_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btn登录.Click Dim a,b As String a=txt姓名.Text b=txt密码.Text If a=Or b=Then MsgBox(用户名或密码不能为空!,MsgBoxStyle.Critical,出错提示)Else MsgBox(欢迎&a,MsgBoxStyle.OkOnly,欢迎)End If End Sub Private Sub btn退出_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles btn退出.Click Me.Close()End SubEnd Class,判断输入内容是否为空,练习作业,1.设计一个求圆周长和圆面积的窗体(如图),要求:单击“计算周长”按钮得到周长值;单击“计算面积”按钮得到面积值;单击“退出”按钮退出程序;显示周长和面积的文本框为只读。,思考:如何做到修改半径时将周长和面积清空?如何避免输入的半径不合法(例如负数或非数字)?,2.教材p154实训1,单选按钮控件RadioButton,功能:在几个选项中选择其一。常用属性Text:单选按钮的说明文字。CheckAlign:圆形按钮在控件中的位置。Checked:单选按钮是否被选中,默认为False。常用事件:Click 单击单选按钮时,该按钮即被选中,Checked属性被设置为True,同时触发Click事件。,复选框控件CheckBox,功能:可在几个选项中多选。常用属性Text:复选框的说明文字CheckAlign:小方框在控件中的位置Checked:复选框是否被选中,默认为FalseCheckState:复选框的当前状态常用事件Click:单击复选框时,复选框状态改变,同时触发Click事件。CheckedChanged:当复选框的Checked属性发生改变时触发该事件,分组控件GroupBox,功能:对窗体上的控件进行分类整理。常用属性Text:设置或取消该控件的说明文字使用方法先添加GroupBox控件,再将其它控件添加到框架中如果GroupBox控件是在其他控件之后添加的,则将窗体上的其它控件拖动到框架中,【例5.3】设计一个如下图的简易计算器。要求:单击“计算”按钮后根据选择的运算符给出操作结果(保留2位小数)单击复选框可根据选择改变“操作结果”文本框的前景色和背景色单击“清除”按钮将文本框中数据清除,同时清除单选按钮和复选框的选择状态单击“退出”按钮可关闭窗体(即退出程序)。,“计算”按钮的Click事件过程代码:,Private Sub btn计算_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btn计算.Click Dim A,B As Single A=CSng(txtA.Text):B=CSng(txtB.Text)If rdb加.Checked=True Then txt结果.Text=Format(A+B,0.00)If rdb减.Checked=True Then txt结果.Text=Format(A-B,0.00)If rdb乘.Checked=True Then txt结果.Text=Format(A*B,0.00)If rdb除.Checked=True Then txt结果.Text=Format(A/B,0.00)End Sub,“清除”按钮的Click事件过程代码:,Private Sub btn清除_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles btn清除.Click txtA.Text=:txtB.Text=:txt结果.Text=rdb加.Checked=False:rdb减.Checked=False rdb乘.Checked=False:rdb除.Checked=False chk红.Checked=False:chk黄.Checked=FalseEnd Sub,将文本框中的数据转换为单精度型,通过Checked属性判断选择了哪种运算,利用Format函数保留2位小数,“字体红色”复选框的CheckedChanged事件过程代码:,Private Sub chk红_CheckedChanged(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles chk红.CheckedChanged If chk红.Checked=True Then txt结果.ForeColor=Color.Red 变为红色 Else txt结果.ForeColor=Color.Black 恢复黑色 End If End Sub,“背景黄色”复选框的CheckedChanged事件过程代码:,Private Sub chk黄_CheckedChanged(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles chk黄.CheckedChanged If chk黄.Checked=True Then txt结果.BackColor=Color.Yellow 黄色 Else txt结果.BackColor=Color.White 恢复白色 End If End Sub,拓展思考和练习,“计算”按钮的条件语句可以换成多分支的吗?“字体红色”复选框和“背景黄色”复选框的代码可以写在Click事件中吗?Tips:Click事件必然导致CheckedChanged。但是反过来,CheckedChanged并不一定是由Click引发。也可以通过切换焦点后按空格键引发。如果操作数B输入了0,该怎么办?如果输入的不是数值,该怎么办?注:以上3和4即为教材实训2的题目要求。,列表框控件ListBox,功能:显示供选择的项目列表。常用属性Items:设置列表框中的显示内容,是一个集合属性,其中包括Count属性:获取列表框中的项目总数Item属性:获取列表框中指定索引号的项目(索引号从0开始)Add方法:在列表框中添加项目,格式为 列表框名称.Items.Add(项目内容)Remove方法:删除列表框中指定的项目,格式为 列表框名称.Items.Remove(项目内容)RemoveAt方法:删除列表框中指定索引号的项目,格式为 列表框名称.Items.RemoveAt(项目索引号)Clear方法:删除列表框中的所有项目,格式为 列表框名称.Items.Clear(),列表框控件ListBox,常用属性(续)Sorted:设置是否对列表框中的项目进行排序,默认为False。如果设置为True,则按首字符的字母顺序排序,数字项排在字母项前面Text:用于返回当前在列表框中选定的项目的内容,只能在程序代码中引用SelectedIndex:用于设置或返回当前在列表框中选定项目的索引号。如果没有选定项目,则它的值为-1,只能在程序代码中引用,列表框控件ListBox,常用事件SelectedIndexChanged:改变列表框中的选择时触发Click:单击列表框时触发DoubleClick:双击列表框时触发,【例题】设计一个如下图的点菜程序。要求:在“本店菜单”列表框中选择某一菜名后单击“选择”按钮可以点菜在“已点菜色”列表框中选择某一菜名后单击“删除”按钮可以取消点菜单击“下单”按钮弹出对话框告知用户已下单,并清空“已点菜色”列表框单击“退出”按钮可关闭窗体(即退出程序)。,窗体的Load事件过程代码:,Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load ListBox1.Items.Add(水煮鱼):ListBox1.Items.Add(铁板牛肉)ListBox1.Items.Add(鱼香肉丝):ListBox1.Items.Add(番茄炒蛋)ListBox1.Items.Add(油焖大虾):ListBox1.Items.Add(手撕包菜)ListBox1.Items.Add(青椒土豆丝):ListBox1.Items.Add(海带排骨汤)ListBox1.Items.Add(紫菜蛋汤)End Sub,给“本店菜单”列表框添加项目,“选择”按钮的Click事件过程代码:,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click Dim selected_dish As String selected_dish=ListBox1.Text ListBox2.Items.Add(selected_dish)End Sub,获得已选项目内容,将已选项目内容添加到“已选菜色”列表框中,“删除”按钮的Click事件过程代码:,Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button2.Click Dim deleted_index As Integer deleted_index=ListBox2.SelectedIndex ListBox2.Items.RemoveAt(deleted_index)End Sub,删除“已选菜色”列表框中选中的项目,“下单”按钮的Click事件过程代码:,Private Sub Button3_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button3.Click MsgBox(您点的菜已下单,请稍候!,确认)ListBox2.Items.Clear()End Sub,删除“已选菜色”列表框中所有项目,获得待删除项目的索引号,拓展思考,如果用户没有在左边列表框选择某个菜色而点击了“选择”按钮,应如何处理?如果用户没有在右边列表框选择某个菜色而点击了“删除”按钮,应如何处理?提示:利用列表框的SelectedIndex属性和MsgBox函数如果希望右边列表框没内容时,“删除”按钮不可用呢?提示:利用列表框的Count属性判断如果用户希望双击“本店菜单”列表框中某个项目就完成“选择”动作呢?提示:利用列表框的DoubleClick事件如果想在运行过程中增加左侧列表框中的菜色呢?,Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load ListBox1.Items.Add(水煮鱼):ListBox1.Items.Add(铁板牛肉)ListBox1.Items.Add(鱼香肉丝):ListBox1.Items.Add(番茄炒蛋)ListBox1.Items.Add(油焖大虾):ListBox1.Items.Add(手撕包菜)ListBox1.Items.Add(青椒土豆丝):ListBox1.Items.Add(海带排骨汤)ListBox1.Items.Add(紫菜蛋汤)Button2.Enabled=False 将“删除”按钮设为无效 End Sub Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click If ListBox1.Text=Then MsgBox(您未选任何添加项目!)Else ListBox2.Items.Add(ListBox1.Text)End If If ListBox2.Items.Count=0 Then Button2.Enabled=False Else Button2.Enabled=True End If End Sub,Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button2.Click If ListBox2.SelectedIndex-1 Then ListBox2.Items.RemoveAt(ListBox2.SelectedIndex)Else MsgBox(您未选任何删除项目!)End If If ListBox2.Items.Count=0 Then Button2.Enabled=False Else Button2.Enabled=True End If End Sub Private Sub Button3_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button3.Click ListBox2.Items.Clear()Button2.Enabled=False End Sub,Private Sub ListBox1_DoubleClick(ByVal sender As Object,ByVal e As System.EventArgs)Handles ListBox1.DoubleClick If ListBox1.Text=Then MsgBox(您未选任何添加项目!)Else ListBox2.Items.Add(ListBox1.Text)End If If ListBox2.Items.Count=0 Then Button2.Enabled=False Else Button2.Enabled=True End If End SubEnd Class,组合框控件ComboBox,功能:显示供选择的项目列表,也可输入新的内容。大多数属性、方法和事件与列表框相同不同的有:DropDownStyle:设置组合框的式样,取值有Simple:简单组合框DropDown:下拉式组合框(默认)DropDownList:下拉式列表框Text:当前选定的列表框选项或者在文本框中输入的字符串,【例题】修改点菜程序,如下图。增加要求:将“本店菜单”换成如下组合框。点击“添加菜色”按钮可将组合框的文本框中输入的非空字符串添加到组合框中。,“添加菜色”按钮的Click事件过程代码:,Private Sub Button5_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button5.Click Dim add_dish As String add_dish=ComboBox1.Text If ComboBox1.Text Then ComboBox1.Items.Add(add_dish)ComboBox1.Text=Else MsgBox(请先输入要添加的菜名!)ComboBox1.Text=End IfEnd Sub,判断菜名是否为空,获得待添加的菜名,拓展思考:如果添加的菜名是原来已经有的,应如何处理?,练习作业,练习“点菜程序”的拓展部分教材【例5.4】和【例5.5】作业教材实训3(除要求),多列列表框控件ListView,功能:创建带有列标题的多列项目列表由ColumnHeader(列标头)和ListViewItem(项)两个对象组成1.在ListView控件中添加列标头常用属性View:设置ListViewItem对象的视图,默认为LargeIconColumns:设置“详细信息”视图中可显示的列Add方法:添加列标头RemoveAt方法:删除指定索引号的列标头 第1个列标头的索引号为0,第2个为1,依此类推Clear方法:移除所有列标头,【例5.6】设计一个如下图的程序。要求:单击“添加列标头”按钮可在ListView控件中添加3个列标头单击“删除列标头”按钮则删除所有列标头,添加前,添加后,“添加列标头”按钮的Click事件过程代码:,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click ListView1.View=View.Details ListView1.Columns.Add(标题1,60,HorizontalAlignment.Center)ListView1.Columns.Add(标题2,60,HorizontalAlignment.Center)ListView1.Columns.Add(标题3,60,HorizontalAlignment.Center)End Sub,“删除列标头”按钮的Click事件过程代码:,Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button2.Click ListView1.Columns.Clear()End Sub,2.在ListView中添加子项(自学)5.4.4 TreeView控件(自学),修改View属性,为后续Add做准备,添加列标头,删除所有列标头,计时器控件Timer,功能:在应用程序中控制定时发生事件。常用属性:Enabled:设置Timer控件是否起作用,默认为FalseInterval:设置定时事件的时间间隔,单位为毫秒。如果将Interval属性设置为0,则Timer控件无效。常用事件:Tick事件:自动以Interval属性指定的时间间隔发生常用方法:Start():启动计时器,相当于Enabled属性设置为TrueStop():停止计时器,相当于Enabled属性设置为 False,【例5.10】设计一个如下图的程序。要求:单击“开始”按钮出现动态变化的160之间的随机整数单击“停止”按钮则使数字固定显示,Tip:窗体设计中添加的Timer控件不会显示在窗体上。,Timer1的Tick事件过程代码:,Private Sub Timer1_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Timer1.Tick Dim n As Integer Randomize()n=Int(60*Rnd()+1)Label1.Text=Format(n,00)End Sub,“开始”按钮的Click事件过程代码:,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click Timer1.Start()End Sub,“停止”按钮的Click事件过程代码:,Private Sub Button2_Click(ByVal sender As Object,ByVal e As System.EventArgs)Handles Button2.Click Timer1.Stop()End Sub,定时发生的事件代码要写在Tick事件中,获得160的随机整数,将随机数按指定格式显示在Label1上,Timer1有效,Timer1无效,图片框控件PictureBox,功能:显示多种格式的图片。常用属性:Image:设置图片框中显示的图片。设置方式有两种:(1)通过属性窗口设置(2)通过代码设置,需使用Image类的FromFile方法,语法格式如下:PictureBox控件名.Image=Image.FromFile(“图片文件路径名”)如要删除图片,则用:PictureBox控件名.ImageSizeMode:设置图片框中显示的图片大小,有如下5个选项值:Normal、StrechImage、AutoSize、CenterImage、Zoom,【例5.11】设计一个如下图的程序。要求:窗体装入时加载图片文件leaf.gif单击“图片上升”按钮可使图片缓缓上升单击“停止上升”按钮可使图片停止上升单击“图片复原”按钮可使图片恢复到原始位置,上升前,上升后,Form1的Load事件过程代码:,Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles MyBase.Load PictureBox1.Image=Image.FromFile(c:leaf.gif)PictureBox1.SizeMode=PictureBoxSizeMode.AutoSize ptop=PictureBox1.TopEnd Sub,在窗体的“声明”段声明模块级变量ptop,用于保存图片原始位置,加载图片,设置图片大小,获得图片原始top值,Timer1的Tick事件过程代码:,Private Sub Timer1_Tick(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Timer1.Tick PictureBox1.Top=PictureBox1.Top-5 End Sub,每隔一定时间图片的top值减5,即上升效果,“图片上升”按钮的Click事件过程代码:,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click Timer1.Start()End Sub,“停止上升”按钮的Click事件过程代码:,Private Sub Button2_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button2.Click Timer1.Stop()End Sub,“图片复原”按钮的Click事件过程代码:,Private Sub Button3_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button3.Click Timer1.Stop()PictureBox1.Top=ptop End Sub,将图片原始top值再赋给图片,拓展思考:如果希望图片上升到Form1的上边缘自动停止呢?,选项卡控件TabControl,功能:创建多页窗体。常用属性:TabPages:是各选项卡的集合 每个单独的选项卡是一个TabPage对象 单击选项卡,相应的TabPage对象触发Click事件,【例5.12】设计一个如下图的程序。要求:窗体上有2个选项卡,分别用于输入单位信息和个人信息单击“确定”按钮后可在即时窗口中输出用户在2个选项卡中输入的信息,单位信息,个人信息,注意:在设置TabControl控件各选项卡的Text属性时,应选定整个控件,否则就没有TabPages属性。,“确定”按钮的Click事件过程代码:,Private Sub Button1_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles Button1.Click Debug.WriteLine(单位名称:&TextBox1.Text)Debug.WriteLine(单位地址:&TextBox2.Text)Debug.WriteLine(单位电话:&TextBox3.Text)Debug.WriteLine(姓名:&TextBox4.Text)Debug.WriteLine(住址:&TextBox5.Text)Debug.WriteLine(手机:&TextBox6.Text)End Sub,利用WriteLine将各文本框的内容输出,练 习,教材【例5.10】、【例5.11】、【例5.12】完成【例5.11】的拓展思考部分设计一个“仿电子表”程序,可显示变化的当前时间,如下图。,鼠标和键盘事件,Windows环境下2种最主要的外部事件驱动方式很多控件都可以响应鼠标或键盘事件VB.NET有多种鼠标和键盘事件,鼠标事件,由鼠标动作引起的除了Click和DoubleClick外,还有:MouseDown:在对象上按下鼠标键时触发MouseUp:在对象上释放鼠标键时触发MouseMove:在对象上移动鼠标时触发MouseHover:鼠标停留在对象上时触发MouseLeave:鼠标离开对象时触发,鼠标事件,MouseDown、MouseUp、MouseMove事件过程结构分别为(假设在Form1上触发):,Private Sub Form1_MouseDown(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs)Handles Me.MouseDownEnd Sub,Private Sub Form1_MouseUp(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs)Handles Me.MouseUpEnd Sub,Private Sub Form1_MouseMove(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs)Handles Me.MouseMoveEnd Sub,鼠标事件,其中参数e有以下常用属性:Button:说明所按的是哪个鼠标键Clicks:获取单击鼠标键的次数Location:获取发生鼠标事件时的鼠标位置X,Y:获取发生鼠标事件时的鼠标X坐标或Y坐标,鼠标事件,MouseHover、MouseLeave事件过程结构分别为(假设在Form1上触发):,Private Sub Form1_MouseHover(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.MouseHover End Sub,Private Sub Form1_MouseLeave(ByVal sender As Object,ByVal e As System.EventArgs)Handles Me.MouseLeaveEnd Sub,这2个事件的e参数没有上面提到的几个属性。,【例5.13】设计一个如下图的程序。要求:在窗体上按住鼠标左键移动鼠标时,图片可以跟随鼠标移动Label中同时显示当前鼠标的X,Y坐标,Form1的MouseMove事件过程代码:,Private Sub Form1_MouseMove(ByVal sender As Object,ByVal e As System.Windows.Forms.MouseEventArgs)Handles Me.MouseMove If e.Button=Windows.Forms.MouseButtons.Left Then PictureBox1.Location=e.Location Label1.Text=X=&e.X Label2.Text=Y=&e.Y End IfEnd Sub,图片可在界面设计阶段就添加完成,判断是否按下鼠标左键,移动图片,获得X,Y坐标,思考:如果把代码写在PictureBox1的MouseMove事件里呢?,注意:e.Location、e.X和e.Y是相对于控件而言的。,【简单绘图实例】设计一个如下图的程序。要求:在Pic