vb动态添加删除控件汇总

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB 动态添加删除控件汇总

1. 概述在使用Visual Basic 进行程序设计的过程中,如果能在运行时刻动态地创建和删除控件,可以极大地丰富界面的处理和变化。本人在设计网络监控系统时,需要在原理图与实物示意图间切换。切换的过程采用本文介绍控件的动态创建和删除来实现,有效地节省了系统资源,同时也有利于简化界面的维护。下面将就Visual Basic 6.0 中的控件在运行时刻的创建和删除的两种方法——控件数组

和控件集合作详细的阐述。2. 基于控件数组的动态控件的创建与删除vb 中的控件数组实际上也是一种数组,其中的每个控件具有相同的Name 属性,但具有不同的Index 属性,在这里Name 属性类似于数组的名字,而Index 属性类似于数组的下标同时,控件数组也支持普通VBA 数组的LBound 、UBound 和Count 方法,控件数组中的控件可以共享一个事件过程,便于代码的编写和集中处理,这正是使用控件数组的最大的理由。但是控件数组与普通的数组并非完全一样,它不需要定义大小,只有这样我们才可以动态的扩展[kuo zhan]它。下面给出利用Load 命令动态添加控件和Unload 命令动态删除控件的一般方法:(1)

首先在窗体上放置一个TextBox ,其Name 属性设置为Text1 ,Index 属性设置为0 ,这样我们就创建了一个

TextBox 控件数组,其中有一个成员。(2)在窗体上放置一个命令按钮Command1 ,在其Click 事件中添加如下的代码:Load

Text1(1)Text1(1).left=0Text1(1).visible=true(3)

在窗体上放置一个命令按钮Command2 ,在其Click 事件中添加如下的代码:Unload Text1(1)(4)运行。单击命令按钮Command1 ,窗体上会出现一个新的文本框;单击命令按钮Command2 ,窗体上刚出现的新的文本框就被删除。需要注意的是:Load 命令创建的控件Text1(1) 与设计时已经放在窗体上的控件Text1(0) 有完全相同的属性,也包括大小和位置等属性,例外的就是Index 属性不一样,Visible 属性默认为False, 所以必须在Load 方法执行之后,执行调整控件位置的语句[yu ju],并把其Visible 属性设置为True ,以便在窗体上可见。Unload 命令只能删除动态加载的控件,若删除设计时创建的控件会产生错误[cuo wu]。另外,利用上面提到的数组的一些方法,可以有效的简化代码的编写。以下的代码可以删除所有动态创建的Text1 控件数组中的控件: Do While

Text1.Count>1Unload Text1(Text1.Ubound)Loop需要说明[shuo ming]的是,菜单数组是控件数组的一种特殊的形式,只是它是在菜单编辑器[bian ji qi]中设置相应的Name 和Index 属性,而且要求一个菜单控件数组中的菜单项必须是

同一级菜单,但是不能创建新的顶级菜单。而动态创建和删除菜单项的方法也使用Load 和Unload 方法,只是默认情况下其Visible 属性是True, 而且不用重新设置相应的位置。 3. 基于控件集合的动态控件的创建与删除VB 中提供一个Controls 集合,用以包含当前窗体中的所有的控件,这对于实现一些功能相对复杂的操作相当有好处。而且Controls 集合也是集合的一种,它支持一般集合的Count 等方法和相应的检索[jian suo]机制[ji zhi]。以下两例就是利用这个控件集合的巧妙实现。要清空当前窗体上的所有的文本框,可以如下实现:Dim Ctl as ControlFor Each Ctl in ControlsIf Typeof Ctl is Textbox thenCtl.Text= ””EndifNext Ctl也可以利用集合的Count 方法如下实现:For i=0 To Controls.Count-1If Typeof Ctl is TextBoxControls(i).Text= ””EndifNext i当然,控件集合毕竟是一种特殊的集合,下面给出利用Add 方法动态添加控件,Remove 方法动态删除控件的一般方法:(1)Controls 集合的Add 方法其语法[yu fa]格式为:Set mycontrol =

controld.Add(ProgId, Name, [Container])在这里,mycontrol 是一个自定义的控件对象,若需要新创建的控件对事件做出反应,还要再定义该对象时增加WithEvents 关键字ProgId 是库名. 控件名形式的控件类的名字,ToolBox 中的控件一般具有类似于mandButton 这样的形式。而

Active X 控件的形式则有所差别,比如若使用Windowless 控件库中的控件一般具有类似于MsWless.WlText 的形式。Name 参数是想赋给控件的名字,与控件的Name 属性相对应。Container 参数是可选的,它代表欲放置控件的容器,默认情况下是放置在窗体上。下例是在窗体上动态创建一个命令按钮,然后单击命令按钮时,执行相应的动作:Dim WithEvents mycontrol As CommandButtonPrivate Sub

Form_Load()Set mycontrol =

Controls.Add("mandbutton",

"mycontrol")mycontrol.Left = 0mycontrol.Caption = "my"mycontrol.Visible = TrueEnd SubPrivate Sub

mycontrol_click()MsgBox "You click me!", vbExclamationEnd Sub需要注意,动态创建的控件必须指定相应的属性,而且在默认情况下,其Visible 属性是False 。(2)

Controls 集合的Remove 方法利用Controls 集合的Remove 方法可以删除用Add 方法动态创建的控件。其语法[yu fa]格式为:Controls.Remove “控件名”比如以上创建的mycontrol 要删除可以使用如下的命令:Controls.Remove "mycontrol"同样应该注意,不能删除一个不存在或者在设计时创建的控件。4. Active X 控件的动态创建和删除以上论述的方法适合于控件在应用程序[ying yong cheng xu]工具箱(TOOLBOX )中的情况,而Active

相关文档
最新文档