第三章 Windows Forms 窗体构造
本章学习目标 在本章认识基本控件的常用属性、事件和方法,并能够灵活应用。使用这些控件来设计用户界面,在此基础上编写出简单的应用程序。
本章学习要点 认识windows窗体。 灵活应用基本控件的常用属性、事件和方法。 使用属性窗口进行设置属性。 掌握排列窗体上的控件、进行控件位置的设置。 掌握各个控件之间的协调。
3.1 Windows Forms 窗体是图形用户界面的基本组成部分,也是Visual Basic可视化程序设计的基础,在应用程序中有着非常重要的位置。对于用户而言,窗体界面就是应用程序,用户感觉不到也不需要知道界面后面的代码,所以应用程序的可用性完全依赖于窗体界面。
3.2 事件驱动模型 对于对象而言,事件就是发生在该对象上的消息。在Visual Basic中,系统为每一个对象预先定义好了一系列的事件。例如:单击、双击和改变等。
3.3 窗体 窗体是所有控件的容器,用户可以根据自己的需要利用工具箱上的控件类图标在窗体上画出界面。
3.3.1各种控件通用的属性 Name名称属性:该属性是所有的对象都具有的属性,是所创建对象的名称。所有的控件在创建时自动提供一个默认名称。在程序中,对象名称是作为对象的标识在程序中被引用,而不显示在窗体上。 Text标题属性:该属性决定了控件上显示的内容。 Enabled属性:该属性决定控件是否允许操作。 属性值有: True:允许用户进行操作,并对操作做出相应。 False:禁止用户进行操作,控制呈暗淡色。
Visible属性:该属性决定控件是否可见。属性值有: True:程序运行时控件可见。 False:程序运行时控件隐藏起来,用户看不到,但控件本身仍然存在。 Backcolor属性:该属性用来设置对象的背景颜色。单击属性值右侧的下拉列表,可以在3种颜色系统(即自定义、web、系统)和系统中选取适当的颜色,如图所示。
Forcolor属性:该属性用来设置前景色。前景色是相对于背景色来说的。通常对象上的文字颜色就可以通过前景色控制。 Font属性:选择此属性时会显示字体对话框,用来设置对象中文字的字体、大小、风格等。
Cursor属性:该属性用来设置鼠标在该对象上方时的形状。 Size属性:该属性用来设置对象的高度和宽度,代码设置格式为: 对象名称.Size.Width=窗体宽度值 对象名称.Size.Height=窗体高度值
3.3.2 Windows窗体常用属性 ControlBox属性:用于设定在执行时是否要显示窗体的最大化、最小化、关闭等控制框。如果此属性值为True,当单击窗体左上角时,就弹出如图所示的【控制】对话框。 Icon属性:用于设定窗体的图标,用于在窗体的系统菜单框中显示,并在窗体最小化时显示该图标。 Locked属性:用于设定是否对窗体的大小进行加锁。如果加锁,则用户不能调整窗体的大小。系统默认值为False。
WindooState属性:用于设定窗体启动时的初始状态为最大化、最小化还是正常启动。有Normal(正常启动)、Minimize(启动时最小化)、Maximize(启动时最大化)值。系统默认为Normal。 Location属性: 决定窗体对象的左上角的位置,代码设置: 窗体对象名称.Location=new Point(x,y) ControlBox属性:决定是否在窗体对象的标题栏上显示有关控制框 FormBorderStyle属性: 决定窗体对象边框的外观 MaximizeBox MinimizeBox属性:决定在窗体对象上是否有最大化或最小化按钮 Startposition属性:决定窗体对象第一次出现的位置
3.3.3 窗体的事件
3.3.4 Windows窗体常用方法和语句 1.Show语句 非模式型:<窗体名>.Show() 模式型:<窗体名>.ShowDialog() 2.Hide方法 <窗体名>.Hide() 3.Close语句 窗体名.Close()
3.4 文本控件 文本控件是以显示文本和输入文本为主要功能的控件。下面介绍常用的标签控件(Label)和文本框控件(Textbox)。
3.4.1 Label控件和LinkLabel控件 Label控件主要用来显示(输出)文本信息,但不能作为输入信息的界面。Lable控件的内容为只读文本,在程序运行时不能更改。 LinkLabel控件是带有链接的标签控件,可以给标签中的文字设计超链接。Label和LinkLabel控件有很多相同的属性、事件和方法。
1.Label控件常用属性 Borderstyle属性:用于设置标签的外观,是否具有边框以及边框的样式。有三种标签外观,分别为None、FixedSingle和Fixed3D。系统默认值为None。 AutoSize属性:用于设置控件是否自动调整大小。属性值有: True:自动调整大小。 False:保持原设计的大小,正文若太长自动裁剪掉。 注意:此属性只对文本不换行的标签控件有效。
Image属性:设置标签的背景图象. TabIndex属性:用于设置Tab键的使用顺序。系统默认值为当前具有Tab属性的控件总数值加1。 Text属性:用于设置标签上显示的文本。 TextAlign属性:用于设置文本的对齐方式。有9种选择。
LinkLabel控件特有的属性: Activelinkcolor属性:用于确认单击该控件时,该超级连接的颜色。 Disabledlinkcolor属性:用于确定linklabel控件不可用时,该超级连接的颜色。 Linkarea属性:用于设置linklabel控件显示为超级连接文本部分的区域大小。 Linkbehavior属性:用于设置linklabel控件下划线行为,该属性有四个SystemDefault、AlwaysUnderline、HoverUnderline 、 NeverUnderline。系统默认值为SystemDefault。
Linkcolor属性:用于设置linklabel控件处于默认状态时的颜色。 Linkvisited属性:用于设置linklabel控件初始值是否访问过,可以选择true或false两个值,系统默认值为false。 Visitedlinkcolor属性:用于设置当linkvisited属性为ture时,该LinkLabel控件的颜色。
2.Label控件常用事件 标签经常接受的事件有: 单击(Click)、双击(DblClick)。 但实际上标签仅起到在窗体上显示文本作用,一般不需要编写事件过程。 LinkLabel控件特有的事件: Linkclicked事件:在linklabel控件上单击时,触发该事件。 Mousemove事件:在linklabel控件上移动鼠标时,触发该事件。
3.4.2 TextBox控件 TextBox控件是一个文本编辑区域。文本框通常用于可编辑文本,但也可以使其成为只读控件。文本框可以输入单行文本,也可以输入多行文本。
1.TextBox控件常用属性 Text属性:用于设置文本框中显示的文本。Text属性的设置方法有三种: 设置时使用【属性窗口】设置 运行时用代码设置 运行时通过用户输入 TextAlign属性:用于设置文本框显示文本的排列方式。 MultiLine属性:用于设置文本框是否能多行显示文本。系统默认值为False。 MaxLengh属性:用于设置文本框中输入的最大字符数。属性值为0时表示可输入任意长度的字符。系统默认值为32767。
PasswordChar属性:用于设定是否显示用户输入的字符。如果该属性设置了某个字符,如“ ScrollBars属性:用于设定是否显示滚动条。该属性只有在设置Multiline属性值为True时才有效。 ReadyOnly属性:用于设定在程序运行时是否能编辑文本框的文本。此属性值设为True时,在程序运行时能编辑文本框的文本,为False时则能编辑。系统默认值为False。 WordWrap属性:用于设置文本框是否能够自动换行。系统默认值为True。
2.TextBox控件常用事件 TextBox控件常用的事件: TextChanged事件 当文本框的文本信息发生变化时,触发该事件。 KeyPress事件 当文本框里有键盘事件产生时,触发该事件。 GotFocus事件 当文本框获得焦点时,触发该事件。 LostFocus事件 当文本框失去焦点时,触发该事件。
【例3-2】字符间的转换 Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms. KeyPressEventArgs) Handles TextBox1.KeyPress Dim aa As String aa = e.KeyChar Select Case aa Case "A" To "Z" aa = Chr(Asc(e.KeyChar) + 32) Case "a" To "z" aa = Chr(Asc(e.KeyChar) - 32) Case " " Case Else aa = "*" End Select TextBox2.Text = TextBox2.Text & aa End Sub
Private Sub Button1_Click(ByVal sender As System Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox1.Text = "" TextBox2.Text = "" End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End
3.5 Button控件 Button控件在应用十分广泛。在程序执行期间,当用户选择一个命令按钮时就执行相应的事件过程。 FlatStyle属性:用于设置当鼠标移动到该控件上并单击时,控件的显示方式。有4中选择方式:分别是Flat、 Popup、 System和 Standard。系统默认值为Standard。
3.5.2 Button控件常用事件 Button控件最常使用的事件就是Click事件。但也有其他控件具有的事件只是不常使用。"单击"按钮的过程中也将产生MouseMove、MouseLeave、Mousedown和MouseUp等事件。Button控件对象的单击事件发生的顺序为;MouseMove、Mousedown 、Click、MouseUp、MouseLeave。
【例3-3】求两个数的和。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click TextBox3.Text = Val(TextBox1.Text) + Val(TextBox2.Text) End Sub
3.6 选择框控件 在应用程序中,有时需要用户作出选择,VB.NET中常用的标准选择控件有复选框和单选按钮。下面介绍具体使用方法及功能。
3.6.1 RadioButton 控件 单选按钮(RadioButton)的左边有一个○。在一组单选按钮中只能并且必须选择一项。当某一项被选定后,其左边的圆圈中出现一个黑点⊙。单选按钮主要用于在多种功能中由用户选择一种功能的情况。
1.RadioButton控件常用属性 Appearance属性:用于设置单选按钮的显示方式。有两种方式:Normal 和 Button。系统默认值是Normal。 AutoCheck属性:用于设置单选按钮的自动更新状态。如果设置为True,则单击单选按钮时自动更新状态。 BackGroundImage属性:设置背景图片。 Checked属性:用于设置单选按钮的选择状态。系统默认值为False。 Dock属性:用于设置单选按钮的停靠位置。 TabStop属性:用于设置单选按钮是否可以使用Tab键为控件提供焦点。系统默认值为False。
2.RadioButton 控件常用事件 单选按钮常用的事件有Click事件和CheckedChanged事件。当单选按钮的值改变时,触发CheckedChanged事件。当设置AutoChecked属性为真时,此事件相当于Click事件。
【例3-4】单选按钮的功能测试。 Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged If RadioButton1.Checked = True Then Label1.TextAlign = ContentAlignment.MiddleLeft End If End Sub Private Sub RadioButton2_CheckedChanged1(ByVal sender As Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged If RadioButton2.Checked = True Then Label1.TextAlign = ContentAlignment.MiddleCenter
Private Sub RadioButton3_CheckedChanged(ByVal sender As System Private Sub RadioButton3_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton3.CheckedChanged If RadioButton3.Checked = True Then Label1.TextAlign = ContentAlignment.MiddleRight End If End Sub
3.6.2 CheckBox控件 复选框(CheckBox)的左边有一个□。复选框列出可供用户选择的选项,用户根据需要选定其中的一项或多项。当某一项被选中后,其左边的方框中显示对号。 CheckBox控件常用属性 Appearance属性:用于设置复选框的外观。该属性共有两个选项:Normal 和 Button。分别表示复选框的常用外观和按钮的形式。系统默认值为Normal。 Checked属性:用于设置复选框是否被选定。
ImageAlign属性:用于设置复选框前景图片的排列顺序。 CheckBox控件常用事件 CheckBox控件的常用事件为Click事件,其他事件不是常用。
【例3-5】复选框的功能测试。 Private Sub CheckBox1_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then Label1.BorderStyle = BorderStyle.Fixed3D Else Label1.BorderStyle = BorderStyle.FixedSingle End If End Sub Private Sub CheckBox2_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = True Then Label1.TextAlign = ContentAlignment.TopCenter Label1.TextAlign = ContentAlignment.TopLeft
3.7 HscorllBar控件和VscorllBar控件
3.7.1 H(V)scorllBar控件常用属性 LargeChange属性:当用户在滚动条区域内单击或者使用PgUp/PgDn时,滚动条幅度改变的值。 Maximum属性:用于设置滚动条的最大幅度。 Minimum属性:用于设置滚动条的最小值。滚动条的滑块拖动到最左边或最上边时,达到最小值。 SmallChange属性:当用户单击滚动条的箭头或方向键时,滚动条发生改变的值。 Value属性:该属性表示滑块所处位置所代表的值。
3.7.2 H(V)scorllBar控件常用事件 (1)Scroll事件:当拖动滚动条中的滑块时,发生Scroll事件。 (2)ValueChange事件:当单击滚动条二端三角箭头或滚动时,先发生ValueChange事件,再发生Scroll事件。
3.8 图片控件PictureBox 图形框(PictureBox)控件用于显示位图 .GIF、.JPEG格式的图形。同时,PictureBox控件也有类似于Visual Basic 6.0 中框架的功能。
3.8.1 PictureBox控件常用属性 BackgroundImage属性:用于设置背景图片。 Image属性:用于指定要显示的图片。 Location属性:用于设置图片框的位置。可以通过设置Left和Top属性来代替Location 属性。 SizeMode属性:用于设置图片的显示格式。有Normal、StretchImage、AutoSize和CenterImage。
3.9 列表选择控件 列表选择控件是以显示列表为主要功能的控件。下面介绍比较常用的列表控件ListBox和复合列表控件ComboBox。
3.9.1 ListBox控件 列表框(listBox)控件通过显示多个选项,供用户选择,达到与用户对话的目的。如果有较多的选项而不能一次全部显示时,则自动加上滚动条。 1.ListBox控件常用属性 ColumnWidth属性:用于设置每一列的宽度。 Sorted属性:用于设置是否对列表框中的各项进行排列。 SelectionMode属性:用于设置一次可以选择多少列表项。
2.ListBox控件常用事件 ListBox控件的常用事件有: SelectedIndexChanged:用于选择不同的索引值时触发该事件。 SelectedValueChanged:用于选择不同文本内容时触发该事件。
3、ListBox控件常用的方法 (1)Clear方法:用于删除列表框中的所有项目。 例:列表框名.Items.Clear (2)Add方法:用于向列表中添加项目。添加项目是通过向集合Items添加元素的方式实现的。 例:向列表框中添加项目: 列表框名.Items.Add("string")
(3)Remove方法:删除列表中的项目。同样删除项目也是通过删除集合Items元素的方式实现的。 例:删除列表框中的项目: 列表框.Items.Remove ("string"|Index) (4)Insert方法:用于将项目插入到列表框中。 例:列表框中插入项目: 列表框名.Items. Insert ("string",Index)
3.9.2 ComboBox控件 组合框(comboBox)是文本框和列表框的特性形成的控件。组合框在列表框中列出可供用户选择的选项,当用户选定某项后,该项内容自动装入文本框中。 1.ComboBox控件常用属性 组合框的属性与列表框的属性非常相似,但其没有SelectionMode属性。组合框有DropDownStyle属性,用于设置组合框式样,其取值如下: (1)DropDown:一般组合框,既可以单击下拉箭头进行选择,也可以直接输入。 (2)Simple:简单组合框,布局上相当于文本框与列表框的组合。 (3)DropDownList:下拉列表框,只能通过单击下拉箭头进行选择。
【例3-7】 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ListBox1.Items.Clear() If CheckBox1.Checked = True Then ListBox1.Items.Add(ComboBox1.Text) ListBox1.Items.Add(TextBox1.Text) End If If CheckBox2.Checked = True Then If RadioButton1.Checked = True Then ListBox1.Items.Add("windows 200") Else ListBox1.Items.Add("windows 98")
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load ComboBox1.Enabled = False TextBox1.Enabled = False RadioButton1.Enabled = False RadioButton2.Enabled = False End Sub Private Sub CheckBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox1.Click ComboBox1.Enabled = Not ComboBox1.Enabled TextBox1.Enabled = Not TextBox1.Enabled Private Sub CheckBox2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles CheckBox2.Click RadioButton1.Enabled = Not RadioButton1.Enabled RadioButton2.Enabled = Not RadioButton2.Enabled
3.10 时间日期控件 3.10.1 Timer控件 Timer 是在一定时间间隔激发事件的控件。Timer控件一般用于动画制作中。 Enabled属性:用于设置是否屏蔽Timer事件。该属性有两个值,分别:ture和false。 Interval属性:用于设置Timer控件触发事件的时间间隔,单位是毫秒。系数默认值是100。 2. Timer控件常用事件 Time控件只有一个Tick事件。在Interval指定的时间间隔内触发该事件。
【例3-8】 Timer控件的实例。 Public Class Form1 Dim direction As Boolean Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If direction Then If Label1.Left < -Label1.Width Then Label1.Left = Me.Width End If Label1.Left = Label1.Left - 20 Else If Label1.Left > Me.Width Then Label1.Left = -Label1.Width Label1.Left = Label1.Left + 20 End Sub
Private Sub Button1_Click(ByVal sender As System Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Enabled = True direction = True End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click direction = False End Class
3.10.2 DateTimePicker控件 DateTimePicker控件用于显示时间,可以在下拉式菜单中选择日起,可以向前向后选择日起。 1. DateTimePicker控件常用属性 CalendarForeColor属性:用于设置日期控件文本的前景色。 CalendarMonthBackground属性:用于设置日期控件月份的背景色。 CalendarTitleBackColor属性:用于设置日期控件标题的背景色。 CalendarTrailingForeColor属性:用于设置日期控件前接日期和后续日期的文本前景色。
CustomFormat属性:用于设置在日期控件中显示的自定义格式化字符串。 DropDownAlign属性:用于设置月份下拉框的对齐方式。系统默认值为Left。 Format属性:用于设置日期控件是以标准格式还是自定义格式显示日期和事件。有Long、Short、Time和Custom四个值。 MaxDate属性:用于设置日期控件的最大日期。 MinDate属性:用于设置日期控件的最小值。 ShowCheckBox属性:用于设置是否显示复选框。当复选框未选中时,表示未选择任何值。 ShowUpDown属性:用于设定是否在日期控件上显示上下箭头。 Value属性:用于设定日期控件的当前值。
2. DateTimePicker控件常用事件 DateTimePicker控件的常用事件有:Click事件和ValueChanged,分别表示单击日期控件和日期控件的值改变时激活该事件。
3.11 Richtextbox控件 Richtextbox控件可用于输入和编辑文本,它提供了比textbox控件更高级的格式特征。比如打开、保存文件,设置选定文本的颜色和字体,查找字符串,重复上一次操作等,所以称它为高级文本框控件。下面介绍Richtextbox控件相对于textbox控件新增的属性和方法。
3.11.1 Richtextbox控件属性: Selectionfont属性:可以通过该属性的值来设置或者读取选定文本的字体 Selectioncolor属性:可以通过该属性的值来设置或者读取选定的文本的颜色 Canredo属性:该属性的值为逻辑值。Ture表示被undo方法取消的操作可以被重做。
3.11.2 Richtextbox控件方法: Undo方法:取消上一次的操作。 Redo方法:重复被上一次的undo方法取消的操作。 Find方法:搜索指定的字符串。 Loadfile方法:指定要加载的文件,并且还可以指定文件类型。 Savefile方法:将文本保存到文件。
【例3-10】richtextbox控件实例 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click RichTextBox1.LoadFile("e:诗集.txt", RichTextBoxStreamType.PlainText) End Sub Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged If CheckBox1.Checked = True Then RichTextBox1.SelectionFont = New Font("楷书", 16) Else RichTextBox1.Undo() End If
Private Sub CheckBox2_CheckedChanged(ByVal sender As System Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged If CheckBox2.Checked = True Then RichTextBox1.SelectionColor = Color.Red Else RichTextBox1.Undo() End If End Sub End Class
3.12 TreeView控件 TreeView控件用于显示具有层次结构的信息,如磁盘中的目录和文件,如图4.21所示的Windows系统下的资源管理器就是一个树型视图控件的例子。在Windows Forms.net中,TreeView控件的使用更加方便,可以在设计时或程序运行中,添加或删除根节点和子节点。
3.12.1 TreeView控件常用属性 CheckBoxes属性:用于设定是否在节点旁边显示复选框。 FullRowselect属性:用于设定当文本内容超过控件显示区域时能否显示。 HotTracking属性:用于设定当鼠标移动到控件上时是否高亮显示。 Indent属性:用于设置子节点的缩进宽度。单位为像素。 LabelEdit属性:用于设定用户能否编辑控件中的节点对象。 Nodes属性:用于设置控件Node对象集合。 PathSeparator属性:用于设置控件的FullPath属性进行分隔的字符。系统默认为“\”。
Scrollable属性:用于设置当节点过多时是否显示滚动条。 SelectionImageIndex属性:用于设定选中节点的图像索引。 ShowLines属性:用于设定在同辈节点以及父节点和子节点之间是否显示行。 ShowPlusMinus属性:用于设定是否在父节点旁边显示加/减号按钮。 ShowRootLines属性:用于设定在根节点之间是否显示行。 Sorted属性:用于设定是否对节点进行排序。
3.12.2 TreeView控件常用事件 AfterExpand事件:当展开节点后,触发该事件。 BeforeExpand事件:在展开节点前,触发该事件。 AfterLabelEdit事件:当更改节点的内容后,触发该事件。该事件只有在LabelEdit属性设置为True的情况下才有效。 AfterSelect事件:当选中节点后,触发该事件。 BeforeCheck事件:在节点前的复选框被选中后,触发该事件。该事件只有在CheckBoxes属性设置为True的情况下才有效。
3.13 调用COM组件和.NET框架组件 在visual basic 6.0中,程序员可以通过调用各种COM组件来弥补系统提供的控件的不足,从而提高了visual basic的能力。visual basic.net也继承了这种特性,下面通过案例来体会怎样在一个项目中加入COM组件和.NET框架组件。
【例3-11】 制作网络功能的播放器。 本程序中使用煤体播放组件windows media player和从网络上下载文件的webclient 组件。其中windows media player是COM组件, webclient是.NET框架组件,所以首先需要手动添加到工具箱中再使用。
本章小结 本章我们讲解了Visual Basic.NET中的一些基本控件的使用方法,并对每个控件都作了一个实例,通过实例来说明这些控件的常用属性、事件和方法。