




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章窗体和常用控件本章目标
窗体(Form)文本控件
按钮(Button)复选框和单选按钮(CheckBox&RadioButton)分组框(GroupBox)列表框和组合框(ListBox&ComboBox)滚动条(ScrollBar)计时器(Timer)图片框(PictureBox)对话框(Dialog)鼠标和键盘事件训练项目1:窗体(Form)的设置相关知识窗体(Form)是用户交互的主要载体,是可视化程序设计的基础界面,通常为矩形,通过组合不同控件和编写代码,可从中得到信息并响应该信息。窗体可以是标准窗口、多文档界面(MDI)窗口、对话框或图形化例程的显示界面。窗体是对象类,因为它们从Control类继承,与.NET框架中的所有对象一样,窗体是类的实例。如果查看窗体的对象层次,就会明白它实际上是从Object类逐层派生出来的子类。表5.1列出了Form类的父类,以及Form类从每个父类继承的内容的简短说明。用“Windows窗体设计器”创建的窗体是类。当运行中显示窗体的实例时,此类用作创建窗体的模板。这些对象公开定义其外观的属性、行为的方法,以及与用户交互的事件。通过设置窗体属性及编写响应其事件的代码,可自定义该对象以满足应用程序的要求。虽然完全可以在“代码编辑器”中创建窗体,但使用“Windows窗体设计器”创建和修改窗体更为简单。VB.NET与以前使用的窗体引擎相比,有几个明显的优点。窗体可以自动改变其中组件的大小,还可以把控件锁定在特定的位置,也就是说,无需借助第三方的工具来完成相应的工作。此外,还可以创建透明的窗体。任务1:创建VB.NET窗体图5.1创建并调整后的窗体当用户新建一个VB.NET项目时,VB.NET将创建一个默认名为Form1的窗体,如图5.1所示。
用户通过修改窗体的Size属性来修改窗体的大小,也可以通过鼠标直接拖曳窗体周围的小方块或通过程序代码来调整窗体的大小。对调整前后进行比较可以发现,VB.NET定制窗体非常简单。窗体生成后的属性都是默认值,用户可以通过“视图”|“属性窗口”菜单,或按“F4”键,或用鼠标右键单击窗体,在弹出的快捷菜单中选择“属性”命令来激活属性窗口,并对属性值重新设定。
窗体的常用属性如表5.2所示。任务2:设置窗体的属性属性说明Name窗体对象的名称WindowState获取或设置窗体运行时的显示状态StartPosition确定窗体运行时的起始位置Text确定标题栏显示文本Width确定窗体的宽度Height确定窗体的高度Left确定窗体左边缘的横坐标xTop确定窗体上边缘的纵坐标yControlBox确定标题栏是否显示控制按钮MaximizeBox确定标题栏是否显示最大化按钮MinimizeBox确定标题栏是否显示最小化按钮AcceptButton确定Enter键的默认击活按钮CancelButton确定Esc键的默认击活按钮Modal确定窗体是否为有模式显示窗体(只读)ActiveControl用于获取或设置窗体上的活动控件ActiveMdiChild用于获取或设置多文档界面的活动子窗口AutoScroll确定控件位于工作区之外时是否显示滚动条BackColor设置窗体的背景颜色BackgroundImage设置窗体的背景图像Enabled确定窗体是否可用(可与用户交互)Font用于设置窗体上的显示字体ForeColor用于设置窗体或控件的前景颜色VB.NET的窗体有多个方法和语句来控制窗体的加载、显示、隐藏、卸载等。表5.3列出了窗体的常用方法。任务3:设置窗体的常用方法和事件方法说明对象调用格式Show显示窗体窗体名.Show()Hide隐藏窗体窗体名.Hide()Refresh窗体刷新窗体名.Refresh()Activate激活窗体并得到光标窗体名.Activate()Close关闭窗体窗体名.Close()ShowDialog以模式对话框形式显示窗体窗名.ShowDialog()这些方法或语句的语法格式如下:
窗体名称.方法()
Show方法用来显示一个已经装入内存的窗体,如果调用时该窗体没有被加载,则VB.NET将自动加载该窗体。例如,下面的代码将在单击窗体Form1后,自动加载frmhello窗体。PrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMyBase.Click DimfrmhelloAsNewfrmhello() frmhello.Show()'显示frmHello窗体EndSub注意:VB.NET中,窗体作为类不能直接引用,使用前必须先声明。如上面的代码中先定义DimfrmhelloAsNewfrmhello(),然后才能调用该对象的Show方法。Close方法用来关闭窗体。当窗体关闭之后,所有在运行时放到窗体上的对象都是不可再访问的,而在设计时放到该窗体上的控件将保持不变,任何对这些控件的访问都会导致窗体重新打开。Hide方法用来隐藏窗体,隐藏窗体时相当于将窗体的Visible属性设置为False。此时用户将无法访问隐藏窗体上的控件,但是程序仍可以使用隐藏窗体上的空间。如果调用Hide方法时窗体还没有加载,Hide方法将自动加载该窗体,但是不显示它。每个对象都可以对外界的有关动作进行识别和响应,所有事件都是系统事先设计定义好的,并针对每个对象的特定动作,开发人员不能自己创建新的事件,只能给对象所能识别的事件编写代码。窗体的常用事件如表5.4所示。当程序运行时,将自动触发Load事件,有关窗体的初始化可以放入该事件。事件说明Load加载窗体Activated窗体激活Deactivate窗体成为非活动窗体Resize窗体改变大小Paint重绘窗体Click单击窗体DoubleClick双击窗体Closed窗体关闭界面设计:新建项目,并将窗体调整到合适的大小。程序代码如下:PrivateSubForm1_Resize(ByValsenderAsObject,ByValeAsSystem.EventArgs)_ HandlesMyBase.Resize MsgBox("我变宽了!") '当窗体改变大小时显示该消息EndSubPrivateSubForm1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)_ HandlesMyBase.Click Me.Width=Me.Width+20 '当单击窗体时让该窗体的宽度增加20个像素点EndSub任务实现:单击窗体,使窗体的宽度增加20个像素点。运行界面如图5.2所示
图5.2单击窗体前后界面及消息框要想设计实用的程序界面,光有窗体还不够,还要在窗体中添加各种控件。控件在VB.NET程序设计中是一个非常重要的角色,也是VB.NET程序设计的重要基础。它可以提供事件过程,供设计者编写程序代码,从而完成程序各部分应执行的操作,还可以通过设置控件的属性值设计出精美的用户界面。下面将介绍几个最常用的控件。训练项目2:常用窗体控件(Controls)
任务1:使用标签任务2:使用文本控件任务3:使用按钮(Button)任务4:使用复选框和单选按钮(CheckBox&RadioButton)任务5:使用分组框(GroupBox)任务6:使用列表框和组合框(ListBox&ComboBox)任务7:使用计时器(Timer)任务8:使用图片框(PictureBox)任务9:使用对话框(Dialog)任务10:使用鼠标和键盘事件任务1:使用标签(Label)相关知识:标签(Label)控件的功能是显示字符串,通常显示的是文字说明信息,用来标识输入或输出区域。VB.NET中包括2种标签控件,分别是Label控件和LinkLabel控件。LinkLabel控件(链接标签)是VB.NET新增的控件,通过它可以向应用程序添加Web样式的链接,它除了具有Label控件的所有属性、方法和事件外,还具有超链接和链接颜色的属性。表5.5给出了Label控件的常用属性。对于Label控件一般不写事件代码,尽管它也能响应很多事件,如Click、Resize、TextChanged等,但是在实际使用中还是主要用来标识信息。如果有特殊的需要,也可以编写事件代码程序,以让它能响应相应的事件。Visible设置标签是否显示在窗体上任务实现:单击链接标签,并将单击的次数记录在普通标签上界面设计:(1)在窗体上放置一个链接标签和一个普通标签控件,设置AutoSize属性为True,让它能根据内容自动改变大小。(2)设置BorderStyle属性为None,即以无边框的形式显示标签。(3)设置普通标签的Text属性为“链接了0次”,链接标签的Text属性为“请链接”。在链接标签的LinkClick事件中编写程序代码如下:SharedcountAsIntegerPrivateSubLinkLabel1_LinkClicked(ByValsenderAsSystem.Object,ByValeAs_System.Windows.Forms.LinkLabelLinkClickedEventArgs)HandlesLinkLabel1.LinkClickedcount=count+1Label1.Text="链接了"&count&"次"EndSub程序运行后的界面及单击“请链接”标签5次后的界面如图5.3和图5.4所示。
图5.3程序初始界面图5.4单击“请链接”标签5次后的界面任务2:使用文本框(TextBox)相关知识:文本框(TextBox)控件用来显示输入和输出的文本信息,是开发应用程序时最常用的控件。TextBox控件是相当灵活的数据显示工具,通常用于编辑文本,不过也可使其成为只读控件。它可以显示单行文本,也可以显示多个行;还可以对文本换行控件大小及添加基本格式进行设置。TextBox控件为在该控件中显示或输入的文本提供单格式化样式。若要显示多种类型的带格式文本,则要使用其他控件。TextBox控件显示的文本包含在Text属性中。默认情况下,最多可在一个文本框中输入2048个字符。如果将MultiLine属性设置为True,则最多可输入32KB的文本。Text属性可以在设计时使用“属性”窗口设置,或在运行时用代码设置,或在运行时通过用户输入来设置。可以在运行时通过读取Text属性来检索文本框的当前内容。表5.6列出了TextBox控件的常用属性。表5.6
TextBox控件的常用属性TextBox控件最常用的事件是TextChanged事件,该事件在文本框的Text属性发生改变时触发。文本框还有自己的方法,它们为开发人员设置文本框提供了方便。表5.7
TextBox控件的常用方法任务实现:在一个文本框中输入字符,另外的文本框中同步显示相应的内容PrivateSubTextBox1_TextChanged(ByValsenderAsSystem.Object,ByValeAs_System.EventArgs)HandlesTextBox1.TextChangedTextBox1.SelectAll() '选中TextBox1中的所有文本TextBox1.Copy() '将选中的文本复制到剪贴板上TextBox2.Clear() '将TextBox2中的所有文本删除TextBox2.Paste()'将选中文本用剪贴板上的文本替换TextBox1.SelectionStart=Len(TextBox1.Text) '取消TextBox1文本的选中状态EndSub界面设计:
在窗体上放置两个文本框,并设置它们的Text属性均为空。程序代码如下:设计时的界面和运行后的界面见图5.5和图5.6。图5.5设计时的界面图5.6运行后的界面任务3:使用
按钮(Button)相关知识:按钮(Button)控件主要用来执行某一命令功能,也称命令按钮。命令按钮的最常用事件是Click事件。通常在Click事件中编写一段代码,当用户用鼠标单击这个按钮时,就会执行某一特定的功能。表5.8
Button控件的常用属性总体要求:图5.7程序初始界面在任务4的基础上,增加两个标签和按钮控件(其中一个按钮具有图标),如图5.7所示,对各对象的属性分别设定,并编程实现如下功能:(1)密码以“*”的形式显示,用户名和密码最大长度为6个字符。(2)如果用户名为“ABC”且密码为“123”则显示“欢迎光临!”,否则显示“密码或用户名错误!”。(3)如果输入3次不对,则将“登录”按钮禁用。并显示“你无权登录!”。图5.7程序初始界面任务实现:登录界面的设计界面设计:
根据要求在窗体上放置2个文本框、2个标签、2个按钮,并按表5.9设置初始属性值。
表5.9界面中控件的初始属性值
根据要求,命令按钮代码程序如下。
“退出”按钮的程序代码:PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton2.ClickEnd'当单击"退出"按钮时,结束程序运行EndSub程序运行后的各种界面效果如图5.8所示,第一次输入了正确的用户名和密码,则显示“欢迎光临!”;第二次输入了错误的密码和用户名,则显示“密码或用户名错误!”;三次输入错误时,则提示“你无权登录!”,同时将“登录按钮”禁用,变成了灰色的。图5.8程序运行后的各种界面效果图任务4:使用复选框和单选按钮(CheckBox&RadioButton)相关知识:复选框(CheckBox)和单选按钮(RadioButton)控件功能相近,都是选择类控件,用来设置要或不要某一选项功能。CheckBox控件指示某特定选项是打开的还是关闭的。它常用于为用户提供是/否或真/假选项。可以成组使用CheckBox控件以显示多重选项,用户可以从中选择一项或多项。RadioButton控件为用户提供由两个或多个互斥选项组成的选项集。虽然CheckBox控件和RadioButton控件看似功能类似,却存在重要差异。它们的相似之处在于,它们都用于指示用户的可选项;不同之处在于,在单选按钮组中一次只能选择一个单选按钮,当用户选择某单选按钮后,同一组中的其他单选按钮不能同时选定。但是对于CheckBox控件可以选择任意数量的选择项。多个复选框或单选按钮可以使用GroupBox控件进行分组。这对于用户界面设计很有用,因为成组控件可以在窗体设计器上一起移动。定义单选按钮组还将告诉用户:“这里有一组选项,您可以从中选择一个且只能选择一个。”CheckBox控件和RadioButton控件的常用属性。
CheckBox控件和RadioButton控件的最常用事件是CheckedChanged事件和Click事件,当单击鼠标时,CheckBox控件会触发Click事件和CheckedChanged事件,但是RadioButton控件可能只触发Click事件,不一定触发CheckedChanged事件。表5.10CheckBox和RadioButton控件的常用属性(1)当单击“跑步”或“打球”时,在文本框中显示你的爱好为跑步或打球。(2)当单击“男”或“女”时,在文本框中显示你的性别。界面设计:在窗体上放置2个CheckBox控件和2个RadioButton控件,再装入1个TextBox控件,并适当调整大小和设置初始的属性值。图5.9程序初始界面任务实现:设计如图5.9所示的界面,实现以下功能图5.10显示了部分运行效果。在上面的程序中,CheckBox控件的Click事件代码,可以不加修改地放在CheckChanged事件中运行。该控件的Checked属性和CheckedState属性是不同的,Checked属性只有两个值True和False,而CheckedState属性有3个值,分别是CheckState.Checked、CheckState.Indeterminate和CheckState.Unchecked。图5.10部分运行效果注意:在同一容器中的单选按钮属于同一组。如本例中的RadioButton1和RadioButton2都在窗体中,因此属于同一组单选按钮。任务5:使用分组框(GroupBox)相关知识:分组框(GroupBox)控件用于为其他控件提供可识别的分组。它是一个容器控件,使用分组框能按功能细分窗体。它对所有选项进行分组,为用户提供逻辑可视化线索。GroupBox控件类似于Panel控件,但只有GroupBox控件显示标题,而且只有Panel控件可以有滚动条。一般不对分组框编写事件过程,尽管它也能响应很多事件,用户通常只用它的分组功能来细化界面。当设置分组框的Visible属性为False时,该分组框内的对象将一起被隐藏。分组框的其他常用属性是Text属性和Name属性,Text显示分组框的标题信息,Name属性是分组框的名字,在程序中引用时要指定Name属性。总体要求:设计如图5.11所示的界面,适当调整控件大小和位置,并设置初始属性。将“性别”分成一组,将“收入状况”分成另一组,要求单击命令按钮能隐藏性别组,再次单击,能显示性别组。程序代码如下:PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton1.ClickIfGroupBox1.VisibleThenGroupBox1.Visible=FalseElseGroupBox1.Visible=TrueEndIfEndSub任务实现:利用分组框,将控件分组。程序运行的界面见图5.11。上面的程序运行时,读者可以发现:“性别”这一组,能选择男或女,两者必须选择一个,而且只能选择一个。“收入状况”这一组,两者也是必须选择一个,而且只能选择一个。但是从整个窗体来看,却选择了两个RadioButton,这是由于分组框使得2组单选钮分别属于不同的分组框容器,从而使用户可以分别选择选项。图5.11程序运行的两种界面任务6:列表框和组合框(ListBox&ComboBox)相关知识:列表框(ListBox)和组合框(ComboBox)控件都能为用户提供一个可供选择的列表,ComboBox控件和ListBox控件具有相似行为,在某些情况下可以互换。但是也存在其中一种控件更适合于某任务的情况。组合框通常应用于存在一组“建议”选项的情况,而列表框通常应用于限制选项为列表中内容的情况。组合框整合了一个文本框,可以输入列表中没有的选项,但是当设置组合框的DropDownStyle属性为ComboBoxStyle.DropDownList时例外。组合框在用户单击下箭头键之前不显示完整列表,它比列表框节约窗体空间。但是当设置组合框的DropDownStyle属性为ComboBoxStyle.Simple时,将显示完整列表,反而比列表框占用的空间多。列表框(ListBox)
ListBox控件显示一个项列表,用户可从中选择一项或多项。如果项总数超出可以显示的项数,则自动向ListBox控件添加滚动条。ListBox控件的常用属性见表5.11。
表5.11
ListBox控件的常用属性ListBox控件的常用方法如下。1.Items.Add方法用于将项目添加到ListBox控件中,其语法格式如下:Object.Items.Add(Item)其中,Object指Listbox控件名,Item是要添加到列表框中的字符表达式。2.Items.Insert方法用于将项目插入到ListBox控件中,其语法格式如下:Object.Items.Insert(Item,Index)其中:(1)Object,指Listbox控件名,Item是要添加到列表框中的字符表达式。(2)Index,是可选参数,用来指定新项目在列表框中的位置。如果所给的Index值有效,则Item将放置在列表框相应的位置。如果省略Index,当Sorted属性值为True时,Item将添加到恰当的排序位置;当Sorted属性值为False时,Item将添加到列表的结尾。3.Items.Remove方法用于从ListBox控件中删除一个项目,其语法格式如下:Object.Items.Remove(Item)其中:(1)Object,指Listbox控件名。(2)Item,用来指定要删除的项目。4.Items.RemoveAt方法RemoveAt方法与Remove方法有所不同,它是按照索引方式删除ListBox控件中的项目,其语法格式如下:Object.Items.RemoveAt(Index)其中:(1)Object,指Listbox控件名。(2)Index,用来指定要删除的项目在列表框中的位置。5.Items.Clear方法Clear方法可以删除ListBox控件的所有项目,其语法格式如下:Object.Items.Clear()修改和删除列表框中的项目,可以通过以上的方法或在属性窗口修改Items的属性值来实现。单击Items右边的按钮,将弹出“字符串集合编辑器”对话框(如图5.12所示),用户可以在其中修改列表框的项目。图5.12列表框的“属性”对话框和“字符串集合编辑器”对话框ListBox列表框最常用的事件是SelectedIndexChanged事件,当鼠标在列表框中单击任一条目时,触发该事件。其事件过程如下:
PrivateSub对象名_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_Handles对象名.SelectedIndexChanged……'添加自己的代码EndSub设计如图5.13所示的界面,当单击“增加条目”按钮时,将文本框中的内容添加到列表框中;当单击“删除条目”按钮时,将列表框的第一条列表项删除。当单击列表框中的条目时,以消息框的形式显示条目内容。界面设计:在窗体上添加1个列表框、1个文本框、3个按钮。设置各对象的初始属性并调整其大小,如图5.13所示。程序运行后的界面如图5.14所示。图5.13程序初始界面任务实现图5.14程序运行后的部分界面组合框(ComboBox)相关知识:组合框(ComboBox)控件的功能和ListBox控件非常相似,但它一次只能选取或输入一个选项,而不能设定为多重选取模式。ComboBox控件默认情况下分两部分显示:顶部是一个允许用户键入列表项的文本框。下面是列表框,它显示用户可以选择列表项。ComboBox控件与ListBox控件相同的属性、方法、事件等,本节不再赘述,ComboBox控件的一些特有属性,如表5.12所示。表5.12
ComboBox控件的特有属性图5.15显示了取不同的DropDownStyle属性值时ComboBox控件的外观。图5.15取不同的DropDownStyle属性值时的ComboBox控件任务7:计时器(Timer)相关知识:计时器(Timer)控件是按标准时间间隔引发事件的控件。该控件的属性不多,但在动画制作或定期执行某种操作等方面很有用。该控件的属性主要有:定义计时器时间间隔长度的Interval属性,其值以毫秒为单位;决定定时器是否有效的Enabled属性。Timer控件的主要方法是Start和Stop,它们分别用于打开和关闭计时器。计时器在关闭时重置;不存在暂停Timer组件的方法。Timer控件的事件只有一个。如果启用了Timer组件,则每个时间间隔都将引发一个Tick事件。在Tick事件中添加代码,则每个时间间隔将自动执行一次该代码。界面设计:在窗体上放置两个按钮、一个图片框和一个计时器,由于计时器控件运行时不可见,所以设计时将被安排在窗体的下方,如图5.17所示。适当调整窗体中各对象的位置和大小,并设置各对象的属性值。图5.17设计阶段界面示意图任务实现:利用计时器实现图片的自动移动表5.14列出了窗体上各个对象的属性设定值。表5.14窗体中控件属性表上面程序运行后如果单击“开始移动”按钮,则图片将慢慢地向右移动。单击“暂停移动”按钮,图片将停止移动,如图5.18所示。与VisualBasic6.0不同,在VB.NET中,Timer对象不能自动启动,必须调用Start方法才能启动。图5.18运行后的效果图相关知识:图片框(PictureBox)控件用于显示位图、GIF、JPEG、图元文件或图标格式的图形。所显示的图片由Image属性确定,该属性可在运行时或设计时设置。SizeMode属性控制图像显示的方式,如表5.15所示。任务8:使用图片框(PictureBox)表5.15
PictureBox控件的常用属性PictureBox控件的常用事件是Click事件,下面将演示单击图片框后,图片框的图片将消失。界面设计:设计如图5.19所示的界面。在窗体上放1个标签、1个文本框、1个图片框,并分别设置它们的属性。其中图片框的SizeMode属性值为StretchImage,BorderStyle属性值为Fixed3D。图5.19设计阶段界面示意图任务实现:PictureBox控件演示程序功能:在文本框中输入图片文件的存放路径和文件名并按回车键,图片框装入该图片并显示,如图5.20所示,因为设置了SizeMode属性值为StretchImage,所以图片能自动根据图片框的大小填满整个图片框。用鼠标单击图片框,图片将从图片框中删除,如图5.21所示。图5.20装入图片图5.21删除图片任务9:使用对话框(Dialog)如果需要OpenFileDialog、SaveFileDialog、FontDialog、ColorDialog、PrintDialog、PrintPreviewDialog等控件。这些控件在VB.NET与Commdlg.dll例程间提供接口,分别对应打开、保存、字体、颜色、打印和打印预览对话框。运行时只要调用这些控件的ShowDialog方法即可弹出相应的对话框。打开文件对话框(OpenFileDialog)相关知识OpenFileDialog控件提供一个标准的打开文件对话框。其中可以指定驱动器、文件夹、文件类型和文件名。OpenFileDialog控件的常用属性见表5.16。OpenFileDialog控件最常用的方法是ShowDialog方法,最常用的事件是FileOK事件,其他方法和事件见表5.17。表5.16
OpenFileDialog控件的常用属性(续表)
表5.17
OpenFileDialog控件的方法和事件当在程序中调用OpenFileDialog控件的ShowDialog方法时,将显示“打开”对话框(见图5.22)。图5.22“打开”对话框OpenFileDialog控件本身并不能打开和读入文件,它需要使用Stream类来实现打开和读入文件的操作,Stream类将在后续章节中讲解。以下示例创建一个OpenFileDialog,设置几个属性,并用ShowDialog显示“打开”对话框,利用Stream类将选定的文件读入到文本框中。界面设计:如图5.23所示,在窗体上放置1个文本框,设置其Multiline属性为True;放置1个按钮,设置其Text属性为open;放置1个打开文件对话框。要求程序运行后,单击“open”按钮,自动打开对话框,选择文本文件后,将该文本文件的内容读取到文本框中。图5.23设计界面任务实现9-1:打开文本文件OpenFileDialog控件的Fileter属性的设定方法如下:筛选器说明|筛选器模式对于每个筛选项,筛选器字符串都包含筛选器说明,后接一垂直线条(|)和筛选器模式。不同筛选项的字符串由垂直线条隔开。下面是筛选器字符串的一个示例:OpenFileDialog1.Fileter="文本文件(*.txt)|*.txt|所有文件(*.*)|*.*"通过用分号分隔各种文件类型,可以将多个筛选器模式添加到筛选器中。例如,“图像文件(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|所有文件(*.*)|*.*”筛选器字符串,可以筛选出扩展名是BMP、JPG、GIF的图像文件和所有文件。程序中,在按钮的Click事件中只设置了OpenFileDialog控件的有关属性,并调用该控件的ShowDialog方法,至于打开文件后如何处理则放在OpenFileDialog控件的FileOk事件中。程序运行后,单击“open”按钮,将打开如图5.22所示的对话框,选择桌面上的test.txt文件后,单击“打开”按钮,则text.txt文件的内容将被读出,并显示在文本框中,如图5.24所示。图5.24读出文件内容后的界面保存文件对话框(SaveFileDialog)相关知识SaveFileDialog控件与OpenFileDialog控件类似,它用于保存文件。SaveFileDialog控件的属性也与OpenFileDialog控件类似,但它也有其专用的属性。表5.18是SaveFileDialog控件的常用属性。SaveFileDialog控件的方法与事件和OpenFileDialog控件的方法与事件相同,这里不再赘述。和OpenFileDialog控件一样,SaveFileDialog控件本身不能保存文件,要写入文件,必须使用Stream类。在任务11-1的基础上增加1个SaveFileDialog控件和按钮,设置按钮的Text属性为Save保存。程序代码如下:PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton2.ClickSaveFileDialog1.Filter="txtfiles(*.txt)|*.txt|Allfiles(*.*)|*.*"SaveFileDialog1.FilterIndex=2SaveFileDialog1.RestoreDirectory=TrueSaveFileDialog1.ShowDialog()EndSub任务实现9-2:保存文本文件图5.25程序运行界面图5.26“另存为”对话框程序中,Save按钮的Click事件中只设置了SaveFileDialog控件的有关属性,并调用了该控件的ShowDialog方法,至于输入或选择文件后如何处理则放在SaveFileDialog控件的FileOk事件中。程序运行后的界面如图5.25所示,打开文件后修改文本框中的内容,然后单击“Save”按钮,弹出“另存为”对话框如图5.26所示。
颜色对话框(ColorDialog)相关知识ColorDialog控件用于显示颜色对话框,以便用户为窗体的其他对象设置颜色,ColorDialog控件允许用户选择48种颜色,如图5.27所示。当用户选择“规定自定义颜色”按钮时,将可以自己调整16种自定义颜色的设置,以满足需求。图5.27“颜色”对话框ColorDialog控件常用的属性见表5.19。表5.19
ColorDialog控件的常用属性ColorDialog控件的常用方法是Reset方法和ShowDialog方法。它的常用事件是HelpRequest事件。调用ColorDialog控件的ShowDialog方法时,根据用户选择的是“确定”按钮还是“取消”按钮,还是返回DialogResult为OK或Cancel。任务实现9-3:改变文本框颜色界面设计:在例5.12的基础上增加1个ColorDialog控件和按钮,设置按钮的Text属性为Color,见图5.28。编程实现,当单击“color”按钮时,能改变文本框的背景色。程序代码如下:PrivateSubButton3_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_HandlesButton3.ClickIfColorDialog1.ShowDialog()=DialogResult.OKThen '调用颜色对话框TextBox1.BackColor=ColorDialog1.Color'改变文本框的背景颜色EndIfEndSub图5.28设计时的界面程序运行后,单击“color”按钮,弹出“颜色”对话框,并根据用户选择的颜色改变文本框的背景色,如图5.29所示。图5.29“颜色”对话框和改变了背景色的文本框字体对话框(FontDialog)相关知识FontDialog控件显示字体对话框,在一个用户熟悉的标准对话框中显示可用的字体列表,用户可以根据需要为窗体上的其他对象选择合适的字体。FontDialog控件的常用属性见表5.20。(续表)
FontDialog控件的常用方法是ShowDialog方法和Reset方法,常用的事件是Apply事件。当单击对话框中的“应用”按钮时触发该事件。界面设计:在上一任务的基础上增加1个FontDialog控件;再增加1个按钮,设置按钮的Text属性为Font,见图5.30。编程实现,当单击“Font”按钮时,能改变文本框中的字体。图5.30设计时的界面任务实现9-4:字体对话框示例。程序运行后,单击“Font”按钮,将弹出“字体”对话框,如图5.31所示。选择适当的字体后单击“应用”按钮或“确定”按钮,均可改变文本框中的字体及其颜色。程序改变字体前后的界面如图5.32所示。图5.31“字体”对话框类似地,读者还可以根据需要,选用其他的公用对话框,如打印对话框、页面设置对话框、打印预览对话框等。图5.32字体改变前后的界面任务10:使用鼠标和键盘事件第1章中已经对事件的概念做了描述,事件的种类很多,要掌握所有的事件不是一件容易的事,本节将介绍VB.NET中最常用的两大类事件:鼠标事件和键盘事件。鼠标事件
鼠标事件是VB.NET中最常用的事件,它是由鼠标触发的。鼠标事件包括Click、DoubleClick、MouseMove、MouseDown、MouseUp等,本章的许多例子已经用到了鼠标的相关事件。表5.21列出了鼠标事件及触发条件对应表。表5.21鼠标事件及触发条件对应表在窗体中放置1个文本框和1个标签按钮,设置文本框的ScrollBars属性为Vertical,Multiline属性为True,给Label1的鼠标事件编写以下程序。每一种事件触发后都将在文本框中显示该事件名称,从中可以看出单击鼠标和双击鼠标时事件的执行顺序。图5.33显示了双击Label1控件后的事件顺序。Label1对象的几种鼠标事件程序:PrivateSubLabel1_MouseDown(ByValsenderAsObject,ByValeAs_System.Windows.Forms.MouseEventArgs)HandlesLabel1.MouseDownTextBox1.Text=TextBox1.Text&"MouseDown事件"&vbCrLfEndSubPrivateSubLabel1_MouseUp(ByValsenderAsObject,ByValeAs_System.Windows.Forms.MouseEventArgs)HandlesLabel1.MouseUpTextBox1.Text=TextBox1.Text&"MouseUp事件"&vbCrLfEndSub任务实现10-1:鼠标事件的测试鼠标事件还能检测出按下和释放的是哪个键,还能检测鼠标当前的位置。在鼠标事件中,要确定鼠标的位置或鼠标的哪个键在操作,必须通过鼠标事件中的对象参数e的有关属性来识别。该对象参数具有Button属性和X,Y属性,Button属性返回鼠标的键值,X,Y属性返回鼠标的位置。PrivateSubLabel1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)_HandlesLabel1.ClickTextBox1.Text=TextBox1.Text&"Click事件"&vbCrLfEndSubPrivateSubLabel1_DoubleClick(ByValsenderAsObject,ByValeAsSystem.EventArgs)_HandlesLabel1.DoubleClickTextBox1.Text=TextBox1.Text&"DoubleClick事件"&vbCrLfEndSub本示例程序通过对象参数e,实现如下功能:当在文本框中按住鼠标左键移动时,将显示鼠标在文本框中的相对位置,并把位置的X,Y坐标显示在文本框中。程序运行时,文本框中的内容会随着鼠标的移动而变化。运行界面见图5.34。图5.33双击Label1控件后的界面图5.34运行界面任务实现10-2:鼠标事件对象e的测试键盘事件键盘事件也是VB.NET中最常用的事件,它是由键盘触发的。键盘事件包括KeyDown、KeyUp和KeyPress等事件,分别代表键被按下、键弹起和一个完整的按键事件。KeyDown和KeyUp事件中,可以通过对象参数e的Keycode属性或KeyData属性来捕获用户按下的是哪个键,也可以通过e参数的Alt、Control和Shift属性来判定用户是否按下了功能键。KeyPress事件中,可以通过对象参数e的KeyChar属性来判定用户的按键。例5.10中就用到了键盘的KeyPress事件,程序代码如下:PrivateSubTextBox1_KeyPress(ByValsenderAsObject,ByValeAs_System.Windows.Forms.KeyPressEventArgs)HandlesTextBox1.KeyPressIfe.KeyChar=Chr(13)ThenPictureBox2.Image=System.Drawing.Image.FromFile(TextBox1.Text)EndIfEndSub该事件中通过对象参数e的KeyChar属性,判定用户是否按下了回车键。如果按下了回车键,则给图片框装上以文本中内容为文件名的图片。学生训练:利用滚动条实现图片的滚动显示通过前面的学习,读者已经可以利用适当的控件组合,结合事件编程和一定的算法,实现比较复杂的程序设计。界面设计: 在窗体中放置2个滚动条、1个Panel控件、1个放置在Panel控件中的图片框。给图片框选择一幅图片,图片的尺寸比显示区域大,采用滚动条,使图片能在显示区域中滚动显示。界面控件的属性如表5.22所示。运行界面如图5.35所示。利用滚动条可以实现图片的滚动显示。表5.22窗体中控件属性表程序代码如下:PrivateSubForm1_Load(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)_Handle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年:大规模员工合同终止公告
- 2025商业综合体排水系统施工合同
- 环保设施设备租赁与维护协议
- 2025合同模板设备租赁标准合同范本
- 硫酸铁铵物质安全数据表MSDS
- 2025年新版事业单位劳动合同
- 阿富汗语学习与应用作业指导书
- 校园里的温馨瞬间记事作文10篇范文
- 电子商务专业基础测试
- 小小书包的陪伴写物11篇范文
- 人教版五年级数学下册同分母分数加减法100道口算题
- 重庆市沙坪坝区南开中学校2023-2024学年八年级下学期期末英语试题(无答案)
- 日本明治维新完整课件
- DL-T839-2003大型锅炉给水泵性能现场试验方法
- 海南省三亚2024年八年级物理第二学期期末统考试题及答案解析
- 人教版数学八年级下册一次函数综合大题练习
- JC-T408-2005水乳型沥青防水涂料
- FZT 74005-2016 针织瑜伽服行业标准
- 2024年广东佛山市顺德区公安局辅警招聘笔试参考题库附带答案详解
- 空气栓塞的应急预案
- GB/T 43701-2024滑雪场地滑雪道安全防护规范
评论
0/150
提交评论