正在阅读:vb6中如何动态添加控件vb6中如何动态添加控件

2005-07-07 10:44 出处: 作者:devil_xp 责任编辑:moningfeng

 但是,为了编程这样一个未引用控件的事件,您必须使用 withevents 关键字声明一个对象变量为vbcontrolextender 对象(如上),并且设置该对象变量到add 方法返回的引用上。然后,利用vbcontrolextender 对象的 objectevent事件来编程该控件的事件。下面是一个简单的例子:

option explicit
dim withevents objext as vbcontrolextender ’声明 extender 变量

private sub loadcontrol()
licenses.add "project1.control1", "xydsfasfjewfe"
set objext = controls.add("project1.control1", "myctl")
objext.visible = true
end sub

private sub extobj_objectevent(info as eventinfo)
’使用 select case 编程控件的事件。
select case info.name
case "click"
’这里处理 click 事件。
’现在显示其他的 case
case else ’未知事件
’这里处理未知事件。
end select
end sub


 注意:不能把一个固有的控件指定给这个 vbcontrolextender 变量; 任何这种试图将引起类型不匹配错误。

 但是,您也可以通过使用 withevents 关键字声明一个对象变量,并且设置该方法返回的引用为该变量,从而编程一个动态添加控件的事件,如下所示。

option explicit
’声明对象变量为 commandbutton 。
private withevents cmdobject as commandbutton

private sub form_load()
set cmdobject = form1.controls.add("vb.commandbutton", "cmdone")
cmdobject.visible = true
cmdobject.caption = "dynamic commandbutton"
end sub

private sub cmdobject_click()
print "this is a dynamically added control"
end sub


 如果希望添加一个用户控件或任何 activex 控件到您的窗体,必须或者把这个控件添加到“工具箱”,或者把控件的 license 关键字添加到 licenses集合中。有关详细信息请参阅“增加方法 (licenses 集合)”。

 注意:如果您添加一个 activex 或用户控件到您的工程,但是没有在窗体中使用它,您也必须不要选定“工程属性”对话框的“生成” 选项卡上的“删除有关未使用的 activex 控件”选项。如果您的应用程序试图添加该控件,那么该 add 方法将失败,因为必需的信息已经被丢弃。


删除控件

 要删除动态添加的控件,用“移除”方法。请注意,您只能删除那些用“添加”方法添加的控件(与用“load”语句添加的控件进行对比)下面的示例删除一个动态添加的控件:

form1.controls.remove "ctl1" ’ 该控件的名称为 ctl1

键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品