VisualBasic属性、方法和事件三

王朝学院·作者佚名  2011-12-12
窄屏简体版  字體:   |    |    |  超大  

为用户提供选择的控件

大多数应用程序需要向用户提供选择,如简单的“Yes/No”选项、或者从包含成百个可能性的列表中进行选择。VisualBasic包含几种用于提供选择的标准控件。下列表格总结了这些控件及其用途。

用CheckBox选择单个选项

CheckBox表明一个特定的状态是选定(on)还是清除(off)。在应用程序中使用CheckBox为用户提供了“True/False”或“yes/no”的选择。因为CheckBox彼此独立工作,所以用户可以同时选择任意多个CheckBox。例如,在图3.9中,可同时选定粗体和斜体。

CheckBox应用程序

这个例子使用一个CheckBox来决定文本用普通字体还是用斜体字显示。关于此例的工作版本,请参阅应用程序示例Controls.vbp中的Check.frm。如图3.10所示,此应用程序有一个TextBox,一个Label,一个CommandButton和两个CheckBox。

下表列出了应用程序中的对象的属性设置。

选定粗体或斜体时,CheckBox的Value属性值设置为1,不选定时为0。缺省Value值为0,所以除非改变Value属性值,否则第一次显示时不会选定CheckBox。可以用常量vbChecked和vbUnchecked表示数值1和0。

checkbox应用程序中的事件

当单击CheckBox时,会发生CheckBox的Click事件。此事件过程测试是否选定CheckBox(即是否Value=vbChecked)。如果选定,通过设置Font对象的Bold或Italic属性,将文本转换为粗体或斜体;该Font对象是由TextBox的Font属性返回的。

PRivateSubchkBold_Click()

IfChkBold.Value=vbCheckedThen'如果选定。

txtDisplay.Font.Bold=True

Else'如果没有选定。

txtDisplay.Font.Bold=False

EndIf

EndSub

PrivateSubchkItalic_Click()

IfChkItalic.Value=vbCheckedThen'如果选定。

txtDisplay.Font.Italic=True

Else'如果没有选定。

txtDisplay.Font.Italic=False

EndIf

EndSub

用选项按钮进行选项分组

选项按钮表示给用户一组两个或更多的选择。但是,不同于CheckBox,选项按钮总是作为一组的组成部分工作的;因此,选择一个选项按钮就会立即清除该组中的其它按钮。定义一个选项按钮组,告诉用户“这是一组选择,从中选一个,而且只选一个”。

例如,在图3.11所示的选项按钮组中,用户只能在三个选项按钮中选择一个。

创建选项按钮组

直接放在一个窗体中(也就是不在Frame或PictureBox中)的所有的选项按钮构成一组。如果想创建别的选项按钮组,必须将其中一些选项按钮组放到Frame或PictureBox中去。

所有在给定的Frame中的选项按钮,组成一个独立的组,在PictureBox中的所有选项按钮也是如此。用这种方法生成一个独立的组时,总是要先画好一个Frame或PictureBox,然后,将选项按钮画到里面。图3.12显示了一个具有两个选项按钮组的窗体。

在Frame中画了一组选项按钮后,用户只能在组内选择一个选项按钮。要在Frame中为控件分组,请按照以下步骤执行:

1.在“工具箱”中选择Frame控件,并在窗体上画出Frame。

2.在“工具箱”中选择OptionButton控件,并在Frame内画出控件。

3.如果还想在Frame中增加选项按钮,重复步骤2。先画Frame,再在Frame上画每个控件,这样移动Frame时控件会一起移动。如果将已经存在的控件移到Frame上,此控件不会和Frame一起移动。

注意如果将已存在的控件分组到一个Frame中去,可以选择这些控件,然后剪贴到Frame或Picture控件上去。

控件的容器

当控件是独立的对象时,窗体和控件之间存在着某种父子关系。图3.12表明选项按钮怎样才能包含在一个窗体或一个Frame控件中。

要理解容器的概念,首先要把所有的控件都想象为所在窗体的孩子。实际上,大多数控件都支持只读Parent属性,它的值就是控件所在的窗体。作为孩子,控件决定其在父窗体上的位置。控件的Left属性和Top属性是相对父窗体而言,且控件不能移出父窗体的边界。移动容器的同时也移动了控件,因此控件与容器的相对位置不变(即控件的Left属性和Top属性不变)。

选定或禁止选项按钮

一个选项按钮可以用以下方法选择:

1.在运行期间用鼠标单击选项按钮。

2.用Tab键定位到选项按钮组,然后在组内使用方向键(箭头键)定位选项按钮。

3.用代码将它的Value属性设置为True:optChoice.Value=True

4.使用在Label的标题中指定的快捷键。

5.要使某个按钮成为选项按钮组中的缺省按钮,只要在设计时将其Value属性设置成True。它保持被选中状态,直到用户选择另一个不同的选项按钮或用代码改变它。

要禁用选项按钮,将其Enabled属性设置为False。程序运行时,若此选项按钮变灰,表示无法选取此选项按钮。

Options应用程序

图3.13所示的窗体使用选项按钮为一台计算机选择处理器类型和操作系统。当用户在组内选择了选项按钮后,Label的标题就改变,反映当前的选择。关于此例的工作版本,请参阅应用程序示例Controls.vbp中的Options.frm。

下表列出了应用程序中对象属性的设置。

Options应用程序中的事件

选项应用程序对事件的响应如下:

前三个选项按钮的Click事件为窗体级的string变量strComputer分配一个相应的描述。

后两个选项按钮的Click事件为第二个窗体级变量strSystem分配一个相应的描述。

这个方法的关键就在于使用这两个窗体级变量,strComputer和strSystem。这两个变量具有不同的string值,选项按钮的最后选定就依赖于这些值。

每次选择新的选项按钮,其Click事件的代码就更新相应变量的值。

PrivateSubopt586_Click()

strComputer="Pentium"

CallDisplayCaption

EndSub

然后它调用一个名为DisplayCaption的过程,此过程把两个变量连在一起并改变Label的Caption属性。

SubDisplayCaption()

lblDisplay.Caption="Youselecteda"&

_strComputer&"running"&strSystem

EndSub

使用子过程是因为改变Caption属性的过程对所有五个选项按钮来说基本是一样的,只不过变量的值因情况而异。这就可以避免在每个Click事件中重复同样的代码。

详细信息变量和子过程将在第五章“编程基础”中讨论。

使用ListBox和ComboBox

ListBox和ComboBox为用户提供了选择。按照缺省规定,选项以垂直单列方式显示,也可以设置成多列方式。如果项目数量超过ComboBox或ListBox所能显示的数目,ScrollBar自动出现在控件上。于是用户可以在列表中上下左右滚动。图3.14为一个单列ListBox。

ComboBox兼有TextBox和ListBox两者的功能。该控件允许用户通过键入文本或选择列表中的项目来进行选择。图3.15为一个ComboBox。

与其它含有单值的控件相反,例如Label的Caption属性或TextBox的text属性,ListBox和ComboBox含有多个值或值的集合。在运行时用内置的方法增加、删除及保持集合中的值。要将几条项目添加到名为List1的ListBox中,其代码如下:List1.AddItem"Paris"

List1.AddItem"NewYork"

List1.AddItem"SanFrancisco"

ListBox和ComboBox是在有限空间为用户提供大量选项的有效方法。

详细信息关于ListBox和ComboBox控件的详细信息,请参阅第七章“使用VisualBasic的标准控件”。

-

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航