
当应用程序功能较强和分类较多,程序和用户的交互频繁时,如果只用一个窗体和用户进行交互,一方面难以进行合乎美观原则的设计,另一方面分类工作很难,设计出来的界面不符合友好原则。这时使用多重窗体程序设计,增强程序界面的友好性。
多窗体指的应用中有多个窗体,它们之间没有绝对的从属关系。每个窗体的界面设计与单窗体的完全一样,只是在设计之前应先建立窗体,这可以通过菜单“工程”/“添加窗体”命令实现。程序代码是针对每个窗体编写的,当然,应注意窗体之间存在的先后顺序和相互调用的关系。所以,多重窗体实际上是单一窗体的集合,而单一窗体是多重窗体程序设计的基础。
一般说来,多窗体的设计基本分成以下几个步骤:
◆分析应用要求,将其功能划分为不同的几部分
◆分别创建各个窗体、模块
◆在创建窗体时,除各窗体自身要完成的功能外顷哗,还要考虑窗体之间的调用关系
◆点击[工程]/[属性]菜单,在[启动对象]中选择应用运行时首先执行的对象
◆运行应用程序,检验应用及各窗体的运行情况
1、多窗体程序设计常用的方法
在单窗体程序设计中,所有的 *** 作都在一个窗体中完成,不需要在多个窗体中切换。而在多窗体程序中逗察,需要打开、关闭、隐藏或显示指定的窗体,这可以通过相应的语句和方法来实现。
在多窗体程序设计经常用到下面四种方法:Load,Show Hide和Unload.
(1)Load方法
它的语法结构如下:
Load [窗体名称]
使用Load方法调用的窗体被存入内存,并不显示出来,同时会产生一个Form_Load()事件。
例如:Load Form2 '将Form2窗体存入内存
(2)Show方法
它的语法结构如下:
[窗体名称].Show
Show方法用来显示被调用的窗体。Show方法兼有装入和显示两种功能,也就是说,在执行Show方法时,如果窗体不在内存中,则Show方法会自动的把窗体调入内存,然后再显示出来。
例如: Load Form2
Form2.Show '将Form2存于内存,并显示Form2窗体
(3)Hide方法
它的语法结构如下:
[窗体名称].Hide
使用Hide方法会隐藏被调用的窗体,既不在屏幕上显示,但仍在内存中(与Unload方法不同),被调用的窗体中的属性等已经处于无效的状态。
例如:
Form1.Hide
Form2.Show '将Form隐藏,并显示Form2窗体
(4)Unload方法
它的语法结构如下:
Unload [窗体名称]
使用Unload方法会清除内存中指定的窗体,与此同时,窗体中的变量和属性等都会处于无效的状态,在移去窗体的同时会产生一个Form_QueryUnload()事件。
例如:Form1.Show
Unload Form2'显示Form1窗体,从内存中移去Form2窗体。
2、一个多窗体程序设计示例
下面就以一个示例来说明如何运进多窗体的程序设计(见教材P283)。
(1)启动新工程
1)设置属性
首先启动一个新的工程,屏幕出山乎茄现一个空白的窗体,窗体的属性设置如下:
属性 设置
Name
Form1
Caption
Form1
BorderStyle
3-Fixed Dialog'窗体的大小不能够在程序的运行过程中改变
MDIChild
False
StartUpPosition
2-CenterScreen'窗体在程序的运行过程中始终位于屏幕的中央
Moveable
False'在程序的运行过程中不能够移动窗体
2)添加控件
在空白的窗体上添加如下控件:五个Label控件、四个TextBox控件和两个CommandButton控件。
(2)添加窗体
选择菜单“工程(Project)”/“添加窗体(add form)”命令,d出对话框,在添加窗体的对话框中选择"窗体"项,单击[打开]按钮,系统就会自动的向原有的工程中添加一个窗体。
1)添加控件
在新的窗体上放置一CommandButton控件,作用是在隐藏新增的窗体的同时显示原有的窗体。
则窗体如下:
2)添加代码
在"继续"按钮的Command1_Click()事件中添加下列代码:
Private Sub Command1_Click()
Form2.Hide '隐藏窗体2
Form1.Show '显示窗体1
End Sub
程序说明:在窗体Form2被显示的过程中,单击[继续]按钮,就会激活Command1_Click()事件,然后通过Form2.Hide 和Form2.Show两条语句实现隐藏窗体和显示窗体的功能。
(3)添加说明模块
选择菜单[工程]/[添加模块],就会d出对话框:
在模块的声明段中添加下列代码:
Global a1 as Single
Global a2 as Single
Global a3 as Single
Global a3 as Single '定义四个全局变量,分别用来存储第一季度,第二季度、第三季度和第四季度的销售情况
(4)添加程序代码
1)窗体Form1中的代码如下:
Private Sub Command1_Click()
Form1.Hide
Form2.Show
End Sub
Private Sub Command2_Click()
End
End Sub
Private Sub Text1_Change()
a1 = Val(Text1.Text) 'VAL()函数用于将字符串转化为数值型
End Sub
Private Sub Text2_Change()
a2 = Val(Text2.Text)
End Sub
Private Sub Text3_Change()
a3 = Val(Text3.Text)
vs2013应用窗体程序设计一个父窗体按照以下 *** 作。1、选中vs2013,点击菜单栏,选岩橘择打开方式,选择新建应用程序,点击新建窗体,粗洞团添加父窗体按钮颤袜,点击确定按钮。
2、在注册表中,找到preview,右键属性,选择好父窗体模板。
3、就会出现父窗体,单击确定即可。
一、利用ActiveX控件进行窗体咐局的界面设计
在VB的可视化的编程环境中,用户不必编写大量的代码,就可以利用VB提供的功能强大的大量控件设计出丰富的界面,这样一来可以使程序员从繁琐的代码编写任务中解脱出来,从而投入到更具有创造力和想象力的工作中去,设计出有个性,有特色、友好的界面。
下面是一个利用ActiveX控件来进行程序界面设计的示例,在这个示例程序中所用到的一些控件在程序的初始化阶段没有被加载,需在读者自己把它们添加到工具箱中。
1.启动一个新工程,向工具箱中添加ActiveX控件
启动一个新的标准Exe工程,然后选择菜单[工程]/[部件],在d出的对话框中选择选中部件对话框中的Microsoft Table Dialog Control6.0,确认后返回设计状态,就会发现SSTab控件已经加入到工具箱中。
2.设置SSTab控件属性
SSTab控件的状态可以在程序中动态的修改,比如在窗体的设计阶段双击窗体,在窗体的Form_load()事件中添加下列代码:
Private Sub Form_load()
SSTab1.TabCaption(1)="选项1" '设置选项1上的文本。
SSTab1.TabVisible(2)=False '设置选项2上的可见状态为不可见。
SSTab1.TabEnabled(0)=False '设置选项0的有效状态为无效。
SSTab1.Tab=1 '设置选项1为选中的状态
SSTab1.Tabs=4 '添加一个选项
SSTab1.TabsPerRow = 4 '设置一行中出现的标签卡数为4
End Sub
3.向窗体上添加控件
设计一个用于算术运算的应用例子,先衡简让向窗体上添加一个CommandButton控件,两个TextBox控件,一个SSTab控件,四个ToggleButton控件、两个UpDown控件和四个Lable控件。
在部件对话框中选中 Micrsoft Forms 2.0 Object Liberary和Micrsoft Windows Common Controls_25.0(SP2),添加ToggleButton控件和UpDown控件到工具箱。
控件说明如下:
CommandButton 控件用来结束程序的运行,为程序的正常结束提供咐滚一个出口。
TextBox控件用来显示程序中的两个变量X和Y的值。
UpDown控件用来实现变量的更新。
ToggleButton控件用来实现不同的加减乘除运算。
Lable控件用来显示文本的运算结果。
SSTab控件用来显示不同的选项,同时作为ToggleButton控件的容器。
4.添加事件响应代码
Private Sub Command1_Click()
End
End Sub
Private Sub Form_Load()
SSTab1.TabCaption(0) = "加法"
SSTab1.TabCaption(1) = "减法"
SSTab1.TabCaption(2) = "乘法"
SSTab1.TabCaption(3) = "除法"
If Text1.Text = "" Then '在设计时,将窗体上的两个文本框的属性清空。
Text1.Text = "0.00000"
End If
If Text2.Text = "" Then
Text2.Text = "0.00000"
End If
End Sub
Private Sub SSTab1_Click(PreviousTab As Integer)
ToggleButton1.Enabled = True
End Sub
Private Sub Text2_Change()
If Text2.Text = 0 Then
ToggleButton4.Enabled = False '如果Text2中的数字为0,除法无效。
Else
ToggleButton4.Enabled = True
End If
End Sub
Private Sub ToggleButton4_Click()
Label4.Caption = Val(Text1.Text) / Val(Text2.Text)
End Sub
Private Sub ToggleButton3_Click()
Label4.Caption = Val(Text1.Text) * Val(Text2.Text)
End Sub
Private Sub ToggleButton2_Click()
Label4.Caption = Val(Text1.Text) - Val(Text2.Text)
End Sub
Private Sub ToggleButton1_Click()
Label4.Caption = Val(Text1.Text) + Val(Text2.Text)
End Sub
Private Sub UpDown1_DownClick()
If Text1.Text >0 Then
Text1.Text = Val(Text1.Text) - 1
End If
End Sub
Private Sub UpDown1_UpClick()
If Text1.Text = "" Then
Text1.Text = 0
End If
Text1.Text = Val(Text1.Text) + 1
End Sub
Private Sub UpDown2_DownClick()
If Text2.Text >0 Then
Text2.Text = Val(Text2.Text) - 1
End If
End Sub
Private Sub UpDown2_UpClick()
If Text2.Text = "" Then
Text2.Text = 0
End If
Text2.Text = Val(Text2.Text) + 1
End Sub
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)