内 部 控 件 控件在VB程序设计中扮演重要的角色,它是VB程序的基本组成部分。合理恰当地使用各种不同的控件,以及熟练掌握各个控件的属性设置,是进行VB程序设计的基础。另外控件应用的好坏直接影响应用程序界面的美观性和操作的方便性。本章详细介绍VB的内部控件的使用方法。 4.1 标 签 标签是VB中最简单的控件,用于显示字符串,通常显示的是文字说明信息。但不能编辑标签控件。 使用标签的情况很多,通常用标签来标注本身不具有Caption属性的控件。例如,可用标签为文本框、列表框、组合框等控件来添加描述性的标签。还可编写代码改变标签控件的显示文本以响应运行时的事件。例如,若应用程序需要用几分钟处理某个操作,则可用标签显示处理情况的信息。 4.1.1 常用属性 标签的属性很多,下面介绍几个常用的属性。 (1)Alignment属性 设置标签中文本的对齐方式。其使用语法如下: Object.Alignment[=值] 其中的“值”可以为0,1或2。0(默认值)表示左对齐;1表示右对齐;2表示居中。 (2)AutoSize属性 设置控件是否能够自动调整大小以显示所有的内容。其使用语法如下: Object.AutoSize[=True或False] (3)BackStyle属性 设置标签的背景样式。其使用语法如下: Object.BackStyle[=值] 其中的“值”可以为0或1。1(默认值)表示是不透明的;0表示是透明的。 (4)BorderStyle属性 设置标签的边框样式。其使用语法如下: Object.BorderStyle[=值] 其中的“值”可以为0或1。0(默认值)表示无边框;1表示单线边框。 (5)Caption属性 设置标签的文本内容。其使用语法如下: Object.Caption[=字符串] (6)WordWrap属性 设置标签的文本在显示时是否自动折行功能。其使用语法如下: Object.WordWrap[=True或False] 其中True表示具有自动折行功能;False(默认值)表示没有自动折行功能。 4.1.2 常用事件和方法 一般很少使用标签事件,标签的方法中常用的只有Move,其基本语法如下: Move left,top,width,height 其中left,top,width,height分别表示移动目的位置的坐标和大小。left为必要参数,其他三个为可选参数。 4.1.3 应用例子 目的:设计一个窗体说明标签的基本应用方法。 首先创建本章工程,在其中添加一个窗体,在该窗体中放置一个标签Label1。该标签的基本属性如下: Name Label1 Caption "中华人民共和国" BorderStyle 1 BackColor &H00FF8080(蓝色) ForeColor &H000000FF(红色) Font楷体_GB2312,二号字,规则 本例窗体的设计界面如图4.1所示,其执行界面如图4.2所示。 图4.1 标签例子设计界面 图4.2 标签例子执行界面 4.2 文 本 框 文本框可以供用户输入数据,是VB中显示和输入文本的主要机制,也是Windows用户界面中最常用的控件。文本框提供了所有基本字处理功能,在Windows环境中几乎所有的输入动作都是利用文本框来完成的。文本框是个相当灵活的输入工具,可以输入单行文本,也可以输入多行文本,还具有根据控件的大小自动换行以及添加基本格式的功能。 4.2.1 常用属性 下面介绍文本框的常用属性。 (1)Text属性 设置控件中显示的文本内容。其使用语法如下: Object.Text[=字符串] (2)MaxLength属性 设置文本框中输入的字符串长度是否有限制。默认值为0,表示该单行文本框中字符串的长度只受操作系统内存的限制;若设置为大于0的数,则表示能够输入的最大字符数目。 (3)MultiLine属性 设置文本框是否以多行方式显示文本。设置为True时以多行文本方式显示;设置为False(默认)时以单行方式显示,超出文本框宽度的部分被截除。其使用语法如下: Object.MultiLine [=True或False] (4)PasswordChar属性 设置是否在控件中显示用户键入的字符。如果该属性设置为某一字符,那么无论Text属性值是什么,在文本框中都只显示该字符。另外,要想使该属性有效,MultiLine属性必须设置为False。 (5)ScrollBars属性 设置文本框是否有垂直或水平滚动条。其使用语法如下: Object.ScrollBars[=值] 其中的“值”可以为0,1,2,3。0(默认值)表示没有滚动条;1表示有水平滚动条;2表示有垂直滚动条;3表示有水平和垂直滚动条。另外,要想使该属性有效,MultiLine属性必须设置为True。 (6)SelLength、SelStart和SelText属性 SelLength返回/设置选定的字符数。 SelStart返回/设置选定文本的起始点。 SelText返回/设置包含当前选定文本的字符串。 4.2.2 常用事件和方法 文本框的方法很少使用,较常用事件是Change和KeyPress;较常用的方法是SetFocus。 (1)Change事件 当文本框的内容被修改时触发。其基本语法如下: Sub Text_Change([Index As Integer]) 其中,Text是文本框的名称。Index是一个整数,若该文本框属于一个控件数组,则Index表示该文本框在数组中的下标,否则不需要这一参数。 (2)KeyPress事件 当在文本框中按任一键时触发。其基本语法如下: Sub Text_KeyPress(KeyAscii As Integer) 其中,KeyAscii为按键对应的一个键码。 (3)SetFocus方法 将焦点移动到指定的对象。 4.2.3 应用例子 目的:设计一个窗体说明文本框的基本应用方法。 首先在本章工程中添加一个窗体,在其中创建两个标签和两个文本框。标签用于显示提示信息,其标题分别为“密码”和“明码”。两个文本框中上一个是主文本框,用于输入密码,密码输入时以“*”形式显示出来,该文本框的基本属性如下: Name Text1 Appearance 0’Flat BackColor &H00FFFFFF& ForeColor &H000000FF& PasswordChar "*" 屏幕下方的文本框的名称为Text2,用于以明码方式显示在第一个文本框中输入的内容。为此,在文本框Text1上设计如下事件过程: Private Sub Text1_Change() Text2.Text = Text1.Text End Sub 本例窗体的设计界面如图4.3所示。运行该窗体,在第一个文本框中输入“87861654”,这时在第二个文本框中显示该明码,其执行界面如图4.4所示。 图4.3 文本框例子设计界面 图4.4 文本框例子执行界面 4.3 命 令 按 钮 命令按钮主要用来执行某一功能,通常在命令按钮的Click事件中编写一段程序,当用户用鼠标单击这个按钮时,就会启动这段程序,执行某一特定的功能。 大多数VB应用程序中都有命令按钮,用户可以单击执行操作。单击时,命令按钮不仅能执行相应的操作,而且看起来就像是被按下和松开一样,因此有时称其为“下压式按钮”。 4.3.1 常用属性 命令按钮的常用属性介绍如下。 (1)Cancel属性 设置命令按钮是否为Cancel按钮,即当用户按Esc键时,是否触发它的Click事件。其使用语法如下: Object.Cancel[=True或False] 为True时表示响应Cancel事件;为False表示不响应Cancel事件。该命令按钮为Cancel按钮。 (2)Caption属性 设置命令按钮的标题,即命令按钮上显示的文字。其使用语法如下: Object.Captionl[=字符串] (3)Default属性 设置命令按钮是否为默认按钮,即当运行程序时,用户按回车键时,就激活它。其使用语法如下: Object.Default[=True或False] 为True时表示该命令按钮为默认按钮;为False(默认值)表示该命令按钮不是默认按钮。 注意:一个窗体上只能有一个命令按钮为默认按钮。 (4)Enabled属性 设置命令按钮是否能被按下。其使用语法如下: Object.Enabled=True或False 为True(默认值)时表示该命令按钮能被按下以执行特定功能;为False表示该命令按钮不能按下来执行特定功能。 (5)Picture属性 设置命令按钮上显示的图形。其使用语法如下: Object.Picture[=图形文件名] 注意:只有在命令按钮的Style属性设置为1时,才会在命令按钮上显示图形。 (6)Style属性 设置命令按钮的类型。其使用语法如下: Object.Style[=0或1] 取0时表示为标准按钮;取1时表示为图形按钮,这时会在标题文本的上方显示由Picture属性指定的图形。 4.3.2 常用事件和方法 命令按钮没有特殊的事件和方法,它最重要的事件就是Click和DblClick事件。 (1)Click事件 当用户在命令按钮上单击鼠标时触发。其基本语法如下: Sub Command_Click([Index As Integer]) 其中,Command是命令按钮的名称。Index是一个整数,若该命令按钮属于一个控件数组,则Index表示该命令按钮在数组中的下标,否则不需要这一参数。 (2)DblClick 当用户在命令按钮上双击鼠标时触发。其基本语法如下: Sub Label_DblClick([Index As Integer]) 其中参数的含义与Click事件中的相同。 4.3.3 应用例子 目的:设计一个窗体说明命令按钮的基本应用方法。 首先在本章工程中添加一个窗体。在其中放置两个命令按钮和一个标签(Label1)。命令按钮Command1的主要属性设置如下: Caption "命令按钮一" FontName "宋体" FontSize 14.25 Picture "Form2.frx":0000 Style 1 命令按钮Command2的主要属性设置如下: Caption "命令按钮二" FontName "宋体" FontSize 14.25 在这两个命令按钮上分别设计以下事件过程: Private Sub Command1_Click() Label1.Caption = "你单击了命令按钮一" End Sub Private Sub Command2_Click() Label1.Caption = "你单击了命令按钮二" End Sub 本窗体的设计界面如图4.5所示。运行本窗体,单击命令按钮command2,其界面如图4.6所示。 图4.5 命令按钮例子设计界面 图4.6 命令按钮例子执行界面 4.4 复 选 框 复选框是选择类控件,用来设置需要或不需要某一选项功能。在运行时,如果用户用鼠标单击复选框左边的方框,方框中就会出现一个“√”符号,表示已选取这个功能了。复选框的功能是独立的,如果在同一窗体上有多个复选框,用户可根据需要选取一个或几个。 复选框的功能类似于单选按钮,也允许在多个选项中做出选择。但不同的是:一系列单选按钮中只允许选定其中的一个;而在一系列复选框中却可以选择多个。 复选框的一个特殊属性是Value属性,它的取值和用法与单选按钮有所差别。若Value属性的值取为0,代表复选框处于未选中状态,此时复选框的选项部分是一个空白的小方块;若Value属性的值取为1,代表复选框处于选中状态,此时复选框的选项部分是一个带有“√”标记的小方块;若Value属性的值取为2,代表复选框处于禁止选择状态。一般系统默认值为0,即未选中状态。 使用复选框时,每单击一次将切换一次复选框的状态:选中或者未选中。每次单击也激活复选框的Click事件,可执行相应操作。 4.4.1 常用属性 复选框的常用属性介绍如下。 (1)Caption属性 设置显示标题,与一般控件不同,复选框的标题一般显示在复选框的右方,主要用来告诉用户复选框的功能。 (2)Value属性 设置复选框在执行时的三种状态,分别是: 0(默认值):表示未复选,处于这种状态的复选框在运行时复选框前没有“√”标志。 1:表示选中,执行时复选框呈现“√”标志。 2:表示灰色,复选框呈现“√”标志,但以灰色显示,表示已经处于选中状态,但不允许用户修改它所处的状态。 4.4.2 常用事件和方法 复选框的常用事件为Click。复选框的方法很少使用。 Click事件:当用户在一个复选框上单击鼠标按钮时发生。 4.4.3 应用例子 目的:设计一个窗体说明复选框的基本应用方法。 首先在本章工程中添加一个窗体。在其中放置一个标签Label1和两个复选框Check1与Check2。在该窗体上设计如下事件过程: Private Sub Check1_Click() Label1.FontBold = Check1.Value End Sub Private Sub Check2_Click() Label1.FontUnderline = Check2.Value End Sub 执行本窗体,单击其中的两个复选框,如图4.7所示。 图4.7 复选框例子执行界面 4.5 单 选 按 钮 单选按钮控件与复选框控件的功能非常相近,复选框表示是否需要某个选项,可以同时选择多个选项中的一个或多个,即各选项间是不互斥的。单选按钮则是多选一,只能从多个选项中选择一个,各选项间的关系是互斥的。单选按钮使用时经常用多个控件构成一个组,同一时刻只能选择同一组中的一个单选按钮,因此,经常将单选按钮放在一个框架中构成一个选项组。 4.5.1 常用属性 单选按钮的常用属性介绍如下。 (1)Caption属性 设置显示标题,说明单选按钮的功能。默认状态下显示在单选按钮的右方,也可以用Alignment属性改变Caption的位置。 (2)Alignment属性 设置文字的对齐方式,其取值如下: 0(默认值):靠左对齐,即圆形按钮位于控件的左边,文字显示在右边。 1:靠右对齐,圆形按钮位于控件的右边,文字显示在左边。 (3)Value属性 设置单选按钮在执行时的两种状态: True:表示选中,运行时该单选按钮的圆圈中出现一个黑点。 False(默认值):表示未选中。 4.5.2 常用事件和方法 单选按钮的常用事件为Click。单选按钮的方法很少使用。 Click事件:当用户在一个单选按钮上单击鼠标按钮时发生。 4.5.3 应用例子 目的:设计一个窗体说明单选按钮的基本应用方法。 首先在本章工程中添加一个窗体。在其中放置一个标签Label1和3个单选按钮Option1,Option2与Option3。在该窗体上设计如下事件过程: Private Sub Option1_Click() Label1.Caption = "选择的操作系统:DOS" End Sub Private Sub Option2_Click() Label1.Caption = "选择的操作系统:Windows" End Sub Private Sub Option3_Click() Label1.Caption = "选择的操作系统:Linux" End Sub 执行本窗体,单击第二个单选按钮,如图4.8所示。 图4.8 单选按钮例子执行界面 4.6 框 架 框架的作用主要是区分一个控件组,也就是让用户可以容易地区分窗体中的各个选项,或者把几个单选按钮分成组,以便把不同种类的单选按钮分隔开。框架在实际运用中往往和其他控件一起使用。 要在框架中加入组成员,必须先在窗体中建立一个框架,再在它的上面建立其所属按钮。如果在框架外面建立好控件之后再将其移到框架内,则控件是不会与所属的框架成为一个群组的。 4.6.1 常用属性 框架的常用属性只有Caption,用于设置框架的标题。 Caption属性:设置显示标题,说明框架的功能。 4.6.2 常用事件和方法 框架的常用事件为Click。框架的方法很少使用。 Click事件:当用户在一个框架上单击鼠标按钮时发生。 4.6.3 应用例子 目的:本例是上一个例子的改进,将三个单选按钮放在一个框架中,使界面更美观。 首先设计一个窗体,在其中放置一个标签Label1,一个框架Frame1和3个单选按钮Option1,Option2与Option3,所有单选按钮放在框架中。在该窗体上设计如下事件过程: Private Sub Option1_Click() Label1.Caption = "选择的操作系统:DOS" End Sub Private Sub Option2_Click() Label1.Caption = "选择的操作系统:Windows" End Sub Private Sub Option3_Click() Label1.Caption = "选择的操作系统:Linux" End Sub 执行本窗体,单击第二个单选按钮,如图4.9所示。 图4.9 框架例子执行界面 4.7 图 片 框 图片框用于在窗体的特殊位置上放置图形信息,也可以在其上放置多个控件,因此它可作为其他控件的容器。图片框的绘图功能在第6章中详细介绍。 4.7.1 常用属性 图片框的常用属性如下。 (1)Appearance属性 返回/设置一个对象在运行时是否以3D效果显示。 (2)AutoRedraw属性 返回/设置从图形方法到一个持久性位图的输出。 (3)AutoSize属性 决定控件是否能自动调整大小以显示所有的内容。 (4)Picture属性 返回/设置图片框控件中显示的图形。在设置时,设计阶段可直接利用属性窗口指定,运行阶段可使用LoadPicture函数加载。 4.7.2 常用事件和方法 图片框的事件和方法主要用于绘图,这些在第6章中详细讨论。 4.7.3 应用例子 目的:设计一个窗体,以命令按钮选择方式显示春、夏、秋、冬四个季节的图片。如图4.10所示是一幅春天的图片。 图4.10 图片框例子执行界面 首先添加一个窗体,在其中放置一个图片框Picture1和4个命令按钮(使用Command1控件数组)。在该窗体上设计如下事件过程: Private Sub Command1_Click(Index As Integer) Select Case Index Case 0 Picture1.Picture = LoadPicture("e:/sf/spring.jpg") Case 1 Picture1.Picture = LoadPicture("e:/sf/summer.jpg") Case 2 Picture1.Picture = LoadPicture("e:/sf/fall.jpg") Case 3 Picture1.Picture = LoadPicture("e:/sf/winter.jpg") End Select End Sub 4.8 图 像 框 图像框用来显形图形,可以显示位图、图标、图元文件、增强型图元文件、JPEG或GIF文件。 图像框与图片框的区别是:图像框控件使用的系统资源比图片框少而且重新绘图速度快,但它仅支持图片框的一部分属性、事件和方法。两种控件都支持相同的图片格式,但图像框控件中可以伸展图片的大小使之适合控件的大小,而图片框控件中不能这样做。 4.8.1 常用属性 图像框的常用属性如下。 (1)Appearance属性 返回/设置一个图像框在运行时是否以3D效果显示。 (2)Picture属性 返回/设置图像框控件中显示的图形。在设置时,设计阶段可直接利用属性窗口指定,运行阶段可使用LoadPicture函数加载。 (3)Stretch属性 返回/设置一个值,决定是否调整图形的大小以适应图像框控件。该属性取值如下: · False:这是默认值,当图形载入时,图像框本身会自动调整大小,使得图形可以填满图像框。 · True:当图形载入时,图形自动调整大小,填满整个图像框。 4.8.2 常用的事件和方法 图像框的事件和方法很少使用。 4.8.3 应用例子 目的:设计一个窗体,说明图像框Stretch属性的作用。 首先添加一个窗体,在其中放置1个图像框Image1(其Picture属性设置为“e:/media/ happy.bmp”)和2个命令按钮(分别为Command1和Command2)。在该窗体上设计如下事件过程: Private Sub Command1_Click() ’实现 "原大小"功能 Image1.Width = 1000’ 设置图像框大小 Image1.Height = 1000 Image1.Stretch = False End Sub Private Sub Command2_Click() ’实现"放大"功能 Image1.Width = 1000’ 设置图像框大小 Image1.Height = 1000 Image1.Stretch = True End Sub 执行本窗体,单击“原大小”命令按钮的屏幕如图4.11所示,单击“放大”命令按钮的屏幕如图4.12所示。 图4.11 图像框例子执行屏幕 图4.12 图像框例子执行屏幕 4.9 线 条 线条(Line)用来在窗体、框架或图片框中创建简单的线段。通过属性设置可控制线条的位置、长度、颜色和样式来定义应用程序的外观。 4.9.1 常用属性 线条的常用属性如下: (1)BorderColor属性 设置直线的颜色。 (2)BorderStyle属性 返回/设置对象的边框样式。取值如下: · 0(Transparent):为透明,即看不见。 · 1(Solid):为实线,默认设置。 · 2(Dash):为虚线。 · 3(Dot):为点线。 · 4(Dash-Dot):为点划线。 · 5(Dash-Dot-Dot):为双点划线。 · 6(Inside Solid):为内实线。 (3)BorderWidth属性 返回/设置控件的边框宽度。 (4)X1,Y1属性 返回/设置线条控件的起始点。 (5)X2,Y2属性 返回/设置线条控件的终止点。 4.9.2 常用事件和方法 线条的事件和方法很少使用。 4.9.3 应用例子 目的:设计一个窗体说明线条的基本应用方法。 首先在本章工程中添加一个窗体。在其上使用线条控件绘制一个立方体,如图4.13所示。 图4.13 线条例子执行界面 添加一个窗体,在其中放置4条线条形成立方体的上平面,选择这些线条,单击鼠标右键,复制该平面线条,粘贴到窗体上,移动到下方形成立方体的下平面,然后添加中间的4条连线。将看不见的三条线的BorderStyle属性设置为3(点线),将所有其他线条的BorderColor属性设置为红色,BorderWidth属性设置为2。 4.10 形 状 形状(Shape)控件可以在窗体,框架或图片框中创建矩形、正方形、椭圆形、圆形、圆角矩形或圆角正方形。可以设置形状的样式、颜色、填充样式、边框颜色和边框样式等。 4.10.1 常用属性 除了BorderColor、BorderStyle和BorderWidth属性与4.9节中线条对应的属性相同外,形状还有如下的一些常用属性。 (1)FillColor属性 返回/设置填充形状、圆环和方框所使用的颜色。 (2)FillStyle属性 返回/设置一个形状控件的填充样式。 (3)Shape属性 用来设置形状控件的形状。其取值及边框形状如下: · 0:矩形,默认设置。 · 1:正方形。 · 2:椭圆。 · 3:圆。 · 4:圆角矩形。 · 5:圆角正方形。 4.10.2 常用事件和方法 形状的事件和方法很少使用。 4.10.3 应用例子 目的:设计一个窗体说明形状的基本应用方法。 首先在本章工程中添加一个窗体,在其上放置一个形状Shape1和一个框架Frame1,在框架中放置6个单选按钮(使用Option1控件数组)用于控制形状Shape的外观。在该窗体上设计如下事件过程: Private Sub Option1_Click(Index As Integer) Shape1.Shape = Index ’Index为Option1控件数组下标 End Sub 执行本窗体,选择“椭圆形”单选按钮,出现如图4.14所示的形状。 图4.14 形状例子执行界面 4.11 列 表 框 列表框是一个为用户提供选择的列表,用户可从列表框列出的一组选项中用鼠标选取一个或多个所需的选项。如果有较多的选择项,超出所画的区域而不能一次全部显示时,VB会自动加上滚动条。 4.11.1 常用属性 下面介绍列表框的常用属性。 (1)MultiSelect属性 设置该列表框是否能选择多项。可能的取值如下: · 0(默认值):表示不允许多重选择,用户一次只能选择一个。 · 1:表示简单多重选定,用户用鼠标单击或按Space键来选取多重列表项,但一次只能增减一个项目。 · 2:表示高级多重选定,用户可利用Ctrl键与鼠标的配合来进行重复选取,或利用与Shift键的配合进行连续选取。 (2)ListCount属性 用于返回列表框中所有选项的总数。 (3)List属性 它是一个一维数组,数组中元素的值就是在执行时看到的列表项。设计时可以在属性窗口中输入List属性来建立列表项,运行时对List数组从0到ListCount-1依次取值可以获得列表的所有项目。 (4)Selected属性 它是一个与List数组中的各个元素相对应的一维数组,记录List数组中每个项目是否被选取。例如,如果List(1)被选取,则Selected(1)的值为True,如果List(1)未被选取,则Selected(1)的值为False。 (5)Sorted属性 设置列表框中的项目是否按字母表顺序排序。可能的取值如下: · True:列表框中的项目按字母表顺序排序。 · False:列表框中的项目不按字母表顺序排序。 注意:Sorted属性必须在设计时设置,在运行时是只读的。 (6)SelCount属性 如果MultiSelect属性设置为1或2,则这个属性反映出列表框中选择的项目。它通常与Selected数组一起使用,用以处理控件中所选的项目。 (7)Style属性 这个属性只能在设计时确定。用于控制控件的外观,其数值可以设置为0(标准样式)和1(复选框样式)。图4.15给出了两个列表框,左边为标准列表框样式,右边为复选列表框样式。 图4.15 两种列表框样式 4.11.2 常用事件和方法 列表框常用事件和方法如下。 (1)Click事件 当用户在一个对象上单击鼠标按钮时发生。 (2)AddItem方法 用于将项目添加到列表框中,其语法为: Object.AddItem Item,Index 其中,Item是要添加到列表框中的字符表达式;Index是可选参数,用来指定新项目在列表框中的位置。 如果所给出的Index值有效,则Item将放置在列表框相应的位置。如果省略Index,当Sorted属性设置为True时,Item将添加到恰当的排序位置,当Sorted属性设置为False时,Item将添加到列表的末尾。 (3)RemoveItem方法 用于从列表框中删除一个项目,其语法为: Object.RemoveItem Index 其中Index用来指定要删除的项目在列表框中的位置。 (4)Clear方法 删除列表框中的所有项目,其语法为: Object.Clear 4.11.3 应用例子 目的:设计一个窗体说明列表框的基本应用方法。 首先在本章工程中添加一个窗体,其执行界面如图4.16所示,可以通过多项选择,然后单击中间的命令按钮在两个列表框中移动多个选项。 图4.16 列表框例子执行界面 添加一个窗体,在其中放置两个标签(从左到右为Label1和Label2)、两个列表框(从左到右为List1和List2)和两个命令按钮(从左到右为Command1和Command2)。在设计阶段向列表框List1中输入4个选择项:“武汉大学”、 “华中科大”、 “武汉理工”和“华中师大”。两个列表框的MultiSelect属性均设置为1。在该窗体上设计如下事件过程: Private Sub Command1_Click() n = List1.ListCount - 1 i = 0 Do While i <= n If List1.Selected(i) Then List2.AddItem List1.List(i) List1.RemoveItem i n = n - 1 Else i = i + 1 End If Loop End Sub Private Sub Command2_Click() n = List2.L
原文链接:https://www.f2er.com/vb/262902.html