1、学习重点 窗体的常用属性、方法和事件。 各控件的常用属性、方法和事件。Visual Basic应用程序界面的设计。,第2章 Visual Basic界面设计(上),2.1 窗 体 2.2 文 本 控 件 2.3 按 钮 控 件 2.4 选 择 控 件 2.5 图 形 控 件,本章内容,2.6 滚 动 条 2.7 时 钟 控 件 2.8 焦 点 2.9 综合使用控件实例,2.1 窗 体,2.1.1 Visual Basic对象的基本属性,1属性设置方法,窗体和其他控件对象的属性设置方法有两种。 (1)设计时通过属性窗口设置属性值。 (2)运行时通过程序代码改变属性值。,对象名. 属性名 = 表达
2、式,2对象的基本属性,Name名称属性,对象的命名规则: 1、必须以字母或汉字开头,由字母、汉字、数字和下划线组成,长度不得超过40个字符。 2、在同一窗体中(同一工程中),对象的名称唯一。 3、设计态时,通过属性窗口设置Name属性;在程序运行时,它是只读的,不能改变。,所有对象都具有的属性。,ForeColor、BackColor、 BackStyle,1、ForeColor用于设置前景色。 2、BackColor用于设置背景色。,常用内部颜色常量或Qbcolor函数或RGB函数为其设置颜色。,3、BackStyle属性用于设置背景风格。属性值为0时,表示该对象透明显示。属性值为1时,表示
3、对象不透明显示,即此时为对象设置背景色才有效。,BorderStyle属性,设置对象的边框风格属性值为0时,表示对象周围无边框。属性值为1时,表示对象有单线边框。该属性对某些不同对象而言,还有其他不同的取值和意义。,Font系列字体属性,FontName字体类型 FontSize字体大小 FontBold粗体 FontItalic斜体 FontStrikethru加删除线 FontUnderLine加下划线,例如,Private Sub Form_Click()Label1.Caption = “欢迎您使用VB!“Label1.FontName = “隶书“Label1.FontSize =
4、24Label1.FontBold = TrueLabel1.FontItalic = TrueLabel1.FontStrikethru = TrueLabel1.FontUnderline = True End Sub,Height、Width、Top、Left (大小和位置属性),Enabled活动属性、Visible可视属性,Enabled属性为TrueEnabled属性为False,Visible属性为True表示可见; Visible属性为False表示对象隐藏。注意:对象仍存在,只是不可见。,2.1.2 窗体的常用属性,1、Name:窗体名称。 缺省命名为FormN(1,2,)。
5、 2、Caption:窗体标题栏上显示的内容。缺省值同Name属性值。 3、Picture:窗体背景图片设置。Form1.Picture = LoadPicture(“D:Waterlilies.jpg“)Form2.Picture = LoadPicture( ),2.1.3 窗体的方法,1方法调用格式,对象名. 方法名 参数项列表,格式说明: 有一些方法是没有参数的,调用时很简单,就采用对象名. 方法名格式调用。 另一些方法是有参数的,当参数多于一个时,用英文标点“,”(逗号)间隔。,2窗体的方法,(1)Print方法,对象名.Print 输出列表; | , 若默认对象名,表示将文本输出到
6、当前窗体上。, 若Print后无参数,则表示输出一个空行。, 英文标点“;”(分号)分隔符:相邻两个输出项之间的分隔符,指定分隔符后的下一个输出项以紧凑格式紧跟着上一个输出项输出,中间没有空格。, 英文标点“,”(逗号)分隔符:相邻两个输出项之间的分隔符,指定分隔符后的下一个输出项以标准格式在下一个打印区(每隔14列开始一个打印区,每列的宽度是所有字符的平均宽度)的起始位置输出。,数值型数据,前有一个符号位(对于正号,不显示但留有一个空格),数据后留有一个空格作为分隔符,Print 1, -2, 3 Print “We“, “study“, “VB6.0“,运行结果,Print 1; -2;
7、3 Print “We“; “study“; “VB6.0“,字符串数据,输出的各字符串数据间没有空格,运行结果,例2-1,Private Sub Form_Click()Print “紧凑格式“Print “圆周率为“; 3.14Print 输出一空行Print “标准格式“Print “Visual“, “Basic“Picture1.Print “紧凑格式“Picture1.Print “Visual“; “Basic“ End Sub,运行界面,打印输出的位置是由对象的绘图坐标CurrentX和CurrentY属性决定的,默认为对象的左上角(0,0)。定位输出函数: Spc(n):在显
8、示或打印列表中的下一个输出项前插入n个空格,从而实现对输出进行定位Tab(n):用来将输出定位在绝对n列号上,使用无参数的Tab()表示将输出定位在下一个打印区的起始位置。,例2-2,Private Sub Form_Click()Print Tab(4); “; Spc(3); “; Spc(3); “; Spc(3); “Print Tab(4); “; Spc(3); “; Spc(3); “Print Spc(3); “; Spc(3); “Print Spc(3); “ End Sub,(2)Cls方法,调用格式:对象名. Cls,(3)Show和Hide方法,调用格式: 窗体名.
9、Show Style窗体名. Hide,对象可以是窗体或图片框,默认为当前窗体。该方法无参。,Form1.Cls Cls Picture1.Cls,2.1.4 窗体的事件,1基本事件分类, 程序事件 鼠标事件 键盘事件,2窗体事件过程的书写格式,Private Sub Form_事件名(参数列表) 程序代码 End Sub,事件过程名由“Form”、“_”和具体的事件名组成。 其他控件对象的事件过程名由对象具体的Name属性值、“_”和具体的事件名组成。,3窗体事件,4常用语句,(1)Load语句:将窗体或其他控件对象载入内存但不显示。,语句格式:Load 对象名,(2)Unload语句:使该
10、对象的所有属性重新恢复为设计状态时设定的初始值,并且还将引发对象的卸载事件。,语句格式:Unload 对象名,(3)End语句 :结束程序的运行,语句格式:End,对象名可以是Me,表示卸载当前窗体。,2.1.5 多重窗体和MDI窗体,1多重窗体是普通窗体的集合。,(1)添加窗体的方法: 单击“工程”菜单“添加窗体”; 单击“标准”工具栏上的“添加窗体”按钮。,(2)加载/卸载、显示/隐藏窗体,Load语句/Unload语句窗体的载入/卸载; Show方法/Hide方法调用窗体的显示/隐藏。,(3)设置启动窗体,单击“工程”菜单打开“工程1属性”对话框在“启动对象”下拉列表框中重新选择 。,2
11、MDI窗体,创建MDI应用程序步骤如下。 (1)创建MDI窗体。单击“工程”菜单选取“添加 MDI窗体”。一个应用程序只能有一个MDI窗体。 (2)创建子窗体。先新建一个新的普通窗体(或者打开一个存在的普通窗体),然后把它的 MDIChild 属性设为 True。,多文档界面允许用户在单个容器窗体(父窗体即MDI窗体)中包含多个文档(子窗体)。,2.2 文 本 控 件,标签 (Label),文本框 (TextBox),主要用于在窗体上标注和显示提示信息。,默认名称为LabelN(N为1,2,3)。,主要用于在窗体上输入输出文本信息。,默认名称为TextN(N为1,2,3)。,2.2.1 标签,
12、1常用属性,(1)Alignment属性 0是默认值左对齐。 1右对齐。 2居中对齐。(2)AutoSize属性 (3)WordWrap属性,注意:如使WordWrap属性生效,则AutoSize属性应设置为True。,例2-4,1常用属性,2.2.2 文本框,1、Text(文本):通过获取该属性值来获取用户输入或编辑的数据。 2、Locked:若取值为True,表示此时文本框中的内容是只读的、不具有交互性,类似于标签,经常用于创建只读文本框。 3、MaxLength(最大长度):缺省值0, 任意个数字符 在VB中一个西文字符与一个汉字都是长度为1,4、PasswordChar(口令):缺省值
13、为空字符串,表示正常显示输入的字符。常与MaxLength属性配合用于创建口令(密码)文本框。 5、MultiLine(多行):属性值为“True”/“False”。该属性不能在程序中改变,当本属性为“True”时,PasswordChar属性设置则无效。,6、ScrollBars(滚动条):缺省值为“0”(无滚动条);若该属性设置为“1”,表示有水平滚动条;若为“2”,表示有垂直滚动条;若为“3”,表示水平与垂直滚动条两者都有。本属性只有在MultiLine属性为“True”时才有效 。,7、SelStart、SelLength和SelText属性 SelStart:选定文本的开始位置(第一
14、个字符位置计为0) SelLength:选定文本的长度 SelText:设定或存放据前两属性设定的文本内容 Text1.SelStart = 1 Text1.SelLength = 3 Text2.Text = Text1.SelText,2方法,(1)SetFocus方法:它能使文本框获得焦点,表现为光标在里面闪动,便于用户进行键盘输入。 (2)Refresh方法:刷新文本框。,2.2 文 本 控 件,3事件,例2-5 模拟剪贴板功能。,对象的属性设置,Dim temptext As String Private Sub CmdCopy_Click()temptext = Text1.Sel
15、Text If temptext “ ThenCmdPaste.Enabled = TrueElseMsgBox “请先选中文本!“End If End Sub Private Sub CmdCut_Click()temptext = Text1.SelText If temptext “ ThenText1.SelText = “ CmdPaste.Enabled = TrueElseMsgBox “请先选中文本!“End If End Sub Private Sub CmdPaste_Click()Text2.Text = temptext End Sub,单击“剪切”、“粘贴”按钮后界面
16、,2.3 按 钮 控 件,1常用属性,创建命令按钮的访问键快捷方式: &访问键 按下Alt+访问键,即可触发命令按钮的单击事件。“&Close“ 若不创建访问键,但需要在标题中包含“&”连字符,则应设置连续的两个连字符。“Add&Minus“,1、Caption(标题):,2、Default(确定):属性值设为“True”,按“Enter”回车键,就等同于单击该命令按钮。 3、Cancel(取消): Cancel属性设为“True”,按“Esc”键即等同于单击本按钮。 4、Enabled(活动):决定按钮是否响应用户或系统事件。,6、ToolTipText提示属性,运行时鼠标暂停在控件上时显示
17、的文本信息,5、 Style属性、Picture属性, 1代表图形样式,命令按钮不仅可显示文本,还可通过Picture属性设置显示图片。,Style属性用来设置命令按钮的风格样式: 0代表标准样式,命令按钮只显示文本。,2方法SetFocus方法:设置焦点,3事件Click事件,2.3 按 钮 控 件,在程序运行时触发命令按钮单击事件的情况 用鼠标单击按钮。 按Tab键或调用SetFocus方法,将焦点转移到按钮上,然后按空格键或Enter回车键 使用按钮的访问键(Alt+访问键) 命令按钮的Default属性为True的情况下按Enter回车键;命令按钮的Cancel属性为True的情况下按
18、Esc键 用代码设置命令按钮的Value属性为True,例2-6 红绿灯切换,对象的属性设置,Dim path As String Private Sub Form_Load()path = “C:Program FilesMicrosoft Visual Studio Common _ Graphics Icons Traffic“ End Sub Private Sub Cmdgreen_Click()Picture1.Picture = LoadPicture(path + “TRFFC10A.ico“) End Sub Private Sub Cmdyellow_Click()Pict
19、ure1.Picture = LoadPicture(path + “TRFFC10B.ico“) End Sub Private Sub Cmdred_Click()Picture1.Picture = LoadPicture(path + “TRFFC10C.ico“) End Sub,运行界面,2.4 选 择 控 件,2.4.1 单选按钮、复选框和框架,单选按钮通常成组出现,用户只能选取一项,就象单选题。,复选框单个或多个成组出现,用户可以选定任意数目(0项)的选项,就象不定向选择题,框架用于将其他控件对象按功能组织成一个可标识的组,1、Caption:设置选项按钮和复选框的文本注释内容
20、;决定框架的标题名称,若为空,则形成封闭框架。 2、Value: 选项按钮的Value的取值为True和False,分别表示选中和未选中。 复选框的Value的取值有三种:0表示未选中,1表示选中,2变灰表示暂时不能访问。,主要属性,1、选项按钮、复选框和框架都能接收Click事件 2、选项按钮或复选框的GotFocus事件 3、在Frame控件内部创建的控件和框架是一个整体,将随框架容器一起移动、显示、消失和屏蔽,主要事件,例2-7 模拟出一道单选题。,Private Sub Cmdok_Click()Dim ans As String If OptionA.Value = True The
21、n ans = “A“If OptionB.Value = True Then ans = “B“If OptionC.Value = True Then ans = “C“If OptionD.Value = True Then ans = “D“Txtans.Text = ans End Sub,例2-8 字体设置程序。,Private Sub CheckB_Click() Private Sub CheckU_Click() If CheckB.Value = 1 Then If CheckU.Value = 1 ThenText1.FontBold = True Text1.FontU
22、nderline = TrueElse ElseText1.FontBold = False Text1.FontUnderline = FalseEnd If End If End Sub End Sub,Private Sub CheckI_Click() Private Sub CheckS_Click() If CheckI.Value = 1 Then If CheckS.Value = 1 ThenText1. FontItalic = True Text1.FontStrikethru = TrueElse ElseText1. FontItalic = False Text1.
23、FontStrikethru = FalseEnd If End If End Sub End Sub,例2-9 利用框架、单选按钮和复选框编写一个婴儿食品调查程序 。,Private Sub Command1_Click()Dim msg As String msg = “您的孩子“If Option1.Value = True Then msg = msg + Option1.CaptionIf Option2.Value = True Then msg = msg + Option2.CaptionIf Option3.Value = True Then msg = msg + Opti
24、on3.Captionmsg = msg + “使用过的米粉牌子有:“If Check1.Value = 1 Then msg = msg + Check1.Caption + “ “If Check2.Value = 1 Then msg = msg + Check2.Caption + “ “If Check3.Value = 1 Then msg = msg + Check3.Caption + “ “If Check4.Value = 1 Then msg = msg + Check4.CaptionText1.Text = msg End Sub,2.4.2 列表框和组合框,组合框是
25、文本框和列表框功能的组合控件,所以用户可以通过在其文本框中输入,来选择列表项。,列表框仅能为用户提供选择的列表,不能由用户直接输入和修改其中的列表项内容。,1、List:数组属性,保存和设置每一个列表项内容 列表框或组合框名.List(列表项序号) 列表项序号是为列表项进行的位置编号,从上至下依次为0、1、2,List1.List(0) List1.List(1) List1.List(2) ,主要属性,2、ListCount(运行态属性):当前列表框中列表项总数通过ListCount-1得到最后一个列表项的序号 3、ListIndex(运行态属性):其值是最后选中的列表项位置序号,若未选任何
26、项目,则其值为-1 对象名.List(ListIndex) 访问最后选中的列表项内容 4、Text (运行态属性) :其值等同于List(ListIndex) 组合框的Text值还表示用户直接在编辑区输入文本。,5、Sorted(排序):取值为True,按各字母表中的次序排序;否则按加入顺序显示。,1、Columns:取值为0时,列表项单列显示,取值大于0时,列表项多列显示 2、MultiSelect:决定用户是否可以一次选择列表框中多个列表项;取值0禁止多选;1通过鼠标单击或按空格键选定或取消多个列表项;2通过Shift或Ctrl与鼠标或按空格键配合进行扩展选择。,列表框的特有属性,3、Se
27、lected(运行态属性) :当选中多个列表项时,列表框名.Selected(列表项序号)形式,值为True表示该序号所对应的列表项选中, “False”表示未选中 4、SelCount (运行态属性) :用户同时选中列表项的数目。 5、Style:控制列表框的外观,取值可以为0(标准形式)和1(复选框形式),Style (风格属性) :下拉组合框(Style=0)简单组合框(Style=1)下拉列表框(Style=2),组合框的特有属性, AddItem方法 用来向列表框中增加项目。 调用格式: 对象名. AddItem 列表项内容 ,插入位置下标,主要方法,注意: 若不指定插入位置,则采用
28、追加形式插入到列表尾 该方法一次只能向列表中添加一个列表项 Form_Load事件过程中使用该方法来初始化列表项 。, Clear方法 删除或清空列表框和组合框中所有的列表项。 调用格式:对象名. Clear, RemoveItem方法 用于删除指定位置的列表项。 调用格式:对象名. RemoveItem 删除项下标 注意:该方法一次删除一个列表项,1、Click:用户通过鼠标选择列表项时,触发该事件 。 2、DbClick:适用于列表框和简单组合框 3、DropDown:适用于下拉式的组合框和下拉式列表框;用户单击组合框中向下的箭头时,将触发DropDown事件,该事件实际上对应于向下箭头的
29、单击事件 4、简单组合框和下拉组合框具有一个文本框似的编辑区,所以它们具有类似于文本框的一些事件,如Change、KeyPress等事件。,主要事件,例2-10,Private Sub Form_Load() List1.AddItem “西游记“List1.AddItem “傲慢与偏见“List1.AddItem “水浒“List1.AddItem “王子复仇记“List1.AddItem “白雪公主“List1.AddItem “红楼梦“List1.AddItem “灰姑娘“CmdDelete.Enabled = False End Sub Private Sub List2_Click(
30、)CmdDelete.Enabled = (List2.ListIndex -1) End Sub Private Sub CmdAdd_Click()List2.AddItem List1.Text End Sub Private Sub CmdDelete_Click()List2.RemoveItem List2.ListIndexCmdDelete.Enabled = (List2.ListIndex -1) End Sub,“删除”按钮有效界面,例2-11,Private Sub Form_Load() Combo1.AddItem “研究生“Combo1.AddItem “本科“C
31、ombo1.AddItem “大专“Combo1.AddItem “大专以下“ End Sub Private Sub Combo1_click()Text1.Text = “你的学历是“ & Combo1.Text End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then Text1.Text = “你的学历是“ & Combo1.TextEnd If End Sub,2.5.1 图片框和图像框,1图片框,2.5 图 形 控 件,(1)常用属性,(2)方法 图片框可以像窗体一样使用Print方法
32、输出文本,使用绘图方法绘制图形,使用Cls方法清除文本和图形。 (3)事件 图片框能接受Click事件和DblClick事件。,例2-12 编写一个加法程序。,Private Sub CmdCalculate_Click()Text3.Text = Val(Text1.Text) + Val(Text2.Text)Val(x)函数是类型转换函数,将字符型转换成数值型 End Sub Private Sub CmdPrint_Click()Picture2.Print Text1.Text + Label1.Caption + Text2.Text + Label2.Caption + Text
33、3.Text End Sub,2图像框,(1)常用属性,2.5 图 形 控 件,2.5.2 直线和形状控件,1直线控件,当BorderWidth属性值等于1时,BorderStyle属性有7个属性值(06),如图2-34所示,其中的 0值,表示线型为透明,在窗体上显示不出来 ;当BorderWidth属性值大于1时,取值只有0和6,不能绘制虚线。,2.5 图 形 控 件,2形状控件,shape控件的底纹图案(FillStyle属性值 ),shape控件的形状( shape属性值),2.5 图 形 控 件,例2-13,Private Sub CmdH_Click() Private Sub Cm
34、dV_Click()Shape1.FillStyle = 2 Shape1.FillStyle = 3 End Sub End Sub,(a)初始界面 (b)单击“垂直线”按钮后界面,1常用属性,2.6 滚 动 条,HScroll(水平)和Vscroll(垂直)两种滚动条控件,1、Max和Min:设置滑块滚动的数值范围 2、SmallChange和LargeChange:设置滑块滚动的增量值 单击滚动条空白处用LargeChange指定其移动量 单击滚动条两端箭头用SmallChange 3、Value:设置当前滑块的位置,(1)Change事件 该事件在滚动后发生,只要滑块位置发生变化,即当
35、Value属性值发生变化时,触发该事件。 (2)Scroll事件 该事件在拖动滚动滑块时发生,在单击两端箭头或滚动条空白处时不发生。当拖动操作结束,滑块位置变化,再产生Change事件。,2事件,例2-14 编程实现利用滚动条的移动改变字体的大小。,Private Sub Form_Load() Private Sub H1_Change() Label2.FontSize = H1.Value Label1.Caption = “字体大小:“ & H1.Value End Sub Label2.FontSize = H1.Value End Sub,要求:当滚动条移动时,将当前Value属性
36、值显示在标签1中,并同步改变标签2的字体大小。滚动条的Name属性设为H1,Min属性设为5,Max属性设为30,SmallChange属性和LargeChange 属性都设为1。,1常用属性,2.7 时 钟 控 件,(1)Enabled属性 :是决定是否有效工作。 用户可以通过代码修改该属性,从而实现启动或暂停时钟控件。,利用该控件实现每隔一段时间有规律的完成相应的操作。计时器运行时不可见,它没有位置和大小属性。,2主要事件 Timer事件:该事件是周期性的。当时钟控件的Enabled属性值为True时,每隔Interval的时间间隔后便触发一次Timer事件。,(2)Interval:指定
37、计时器事件之间的间隔时间以ms(毫秒)为单位,取值范围为065535 取(缺省值) 0时Timer控件无效,例2-15 利用时钟控件进行30秒倒计时。,Private Sub Form_Load()Text1.Text = 0Text2.Text = 30Label3.Caption = “系统时间:“ & Time End Sub Private Sub Timer1_Timer()If Val(Text1.Text) = 30 ThenEndElseText1.Text = Val(Text1.Text) + 1Text2.Text = 30 - Val(Text1.Text)Label3
38、.Caption = “系统时间:“ & TimeEnd If End Sub,2.8 焦 点,1TabIndex属性 控件对象的Tab键顺序,默认为添加对象的次序,也可以通过属性窗口重新给定。初始值从0开始,不能接收焦点的控件中标签和框架也有该属性。 2TabStop属性 若要使Tab键操作时跳过某对象,即不能用Tab键使该对象获得焦点,只要将该对象的TabStop属性改为False就行了。,2.9 综合使用控件实例,例2-16 设计一个小学计算题。在第一个界面上选择题目类型:是圆还是三角形问题,选择进入不同界面。在圆问题的界面中,输入圆半径,选择计算圆周长或圆面积。在三角形问题界面中,输入
39、3个正整数,判断以此作为三边能否构成三角形,分别显示相应信息。,Private Sub Cmdin_Click()If Optionc.Value ThenFormc.ShowElseFormt.ShowEnd IfMe.Hide End Sub Private Sub Cmdend_Click()End End Sub,1首界面,2三角形界面,Private Sub Cmdjudge_Click()Dim a As Integer, b As Integer, c As Integera = Val(Txta.Text): b = Val(Txtb.Text): c = Val(Txtc.T
40、ext)If a 0 And b 0 And c 0 ThenIf a + b c And a + c b And b + c a Then Picture1.Print “以“ & a & “、“ & b & “、“ & c & _“为三边能构成一个三角形。“ElsePicture1.Print “以“ & a & “、“ & b & “、“ & c & _“为三边不能构成一个三角形。“End IfElsePicture1.Print “非法数据!“End If End Sub,Private Sub Cmdreturn_Click()Me.HideFormmain.Show End Sub
41、,3圆界面,Private Sub Cmdshow_Click()Dim r As Single, ans As Single, pi As Singlepi = 3.14r = Val(Txtr.Text)If r 0 ThenIf Checkc.Value = 1 Thenans = 2 * pi * rList1.AddItem “圆周为“ & ansEnd IfIf Checks.Value = 1 Thenans = pi * r * rList1.AddItem “圆周为“ & ansEnd IfElseList1.AddItem “非法数据!“End If End Sub,Private Sub Cmdreturn_Click()Me.HideFormmain.Show End Sub,