vb实现动态添加控件

VB6有一个新功能,可以动态添加控件,不用控件数组:

object.Add (ProgID, name, container)

参数说明

Object 必需的。一个对象表达式,其值是“应用于”列表中的一个对象。

ProgID 必需的。一个标识控件的字符串。大多数控件的ProgID 都可通过查看对象浏览器来决定。控件的ProgID是由控件的库和类组成的。

例如,CommandButton控件的ProgID是 VB.CommandButton。在ProgID 与对象浏览器中所显示的不一样的情况下,Visual Basic

将显示一个包括正确 ProgId 的错误信息。

name 必要的。一个字符串,用来标识集合的成员。

container 可选的。一个对象引用,它指定控件的容器。如果没有指定或为NULL,缺省值为 Controls 集合所属的容器。通过指定该参数,可以把一个控件放置在任何现存的容器控件(如 Frame控件)中。用户控件或 ActiveX 文档也可以作为一个容器。

举例: //在picture1上面添加一个commandbutton

Private Sub Form_Load()
Form1.Controls.Add "VB.CommandButton", "cmdOk", Picture1
With Form1!cmdOk
.Visible = True
.Width = 500
.Caption = "确认(&Y)"
End With
End Sub

重点:当您添加一个未引用的需要许可证的控件到一个现存的(已部署好的)应用程序时,在使用Add 方法之前您必须也添加这个控件的许可证关键字。

在运行时添加未引用的控件:

您也可以利 Add 方法来动态添加一个在工程中没有被引用的控件。(“未引用的”控件是不出现在 Toolbox 中的控件)。为此,您必须也把控件的License关键字添加到 Licenses 集合中。下面的示例中在添加控件本身之前添加了控件的许可证关键字:

Option Explicit
Private WithEvents extCtl As VBControlExtender
Private Sub Form_Load()
Licenses.Add "prjWeeks.WeeksCtl", "xydsfasfjewfe"
Set extCtl = Form1.Controls.Add("prjWeeks.WeeksCtl", "ctl1")
extCtl.Visible = True The control is invisible by default.
End Sub

但是,为了编程这样一个未引用控件的事件,您必须使用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

时间: 2024-11-16 09:47:03

vb实现动态添加控件的相关文章

VB.NET动态添加控件遇到问题,求助

问题描述 我想点击一个名为"新建页面"的按钮,就会新建一个Tabpage,同时在新建的Tabpage中添加一个按钮控件.我写的代码可以实现点击一次后,会新建一个Tabpage,然后在其中新建按钮,但是当点击第二次时,它只会新建Tabpage,但是不会新建按钮,而且在原来新建的Tabpage中新建的按钮也会不见了,还有,第二个Tabpage的标题也会莫名其妙变化,这是怎么回事?我想每次点击按钮都会新建页面和按钮,且控件不会消失.求助,谢谢这是代码PublicClassForm1DimTa

在vb.net中如何动态添加控件ovalshape(求大神帮帮小弟)

问题描述 在vb.net中如何动态添加控件ovalshape(求大神帮帮小弟) 控件button在vb.net中可以动态添加,但是ovalshape却不能,如:(button的动态添加) dim mybutton as new button ...... mybutton.text="" ..."" mybutton.location=new point() .... me.controls.add(mybutton) addhandler mybutton.cli

(论坛答疑点滴)怎么给Table动态添加控件并且得到控件的值?

动态|控件 此例子达到的效果是: 每按一次Button1,在表格Table1中添加一行(行中有2列,一列是文本框,一列是下拉框),并且当按钮第一次按下时再添加一个按钮,点击这个动态添加的按钮,输出表格中所有的控件的值. 前台: <form id="Form1" method="post" runat="server">             <asp:Table id="Table1" runat=&quo

如何用代码动态添加控件

在资源编辑器里我们可以方便地在对话框中加入所需控件,比如文本编辑框.列表控件等.但假如我们需要在运行期间动态生成这些控件该怎么做呢?本文就是讲述用代码动态添加控件的方法,并提供示例工程. 程序运行界面如下 为了方便演示,我们先生成一个基于对话框的MFC工程,起名为My 在CMyDlg.h中做下面几个步骤: public: //加上这个变量 CEdit m_MyEdit; protected: //加上这个函数, 用来响应编辑框改变的事件 afx_msg void OnChangeEdit();

gridview-在GridView控件FooterTemplate 动态添加控件

问题描述 在GridView控件FooterTemplate 动态添加控件 我有个一个gridview是绑定一个datatable. 这个table的列是不固定的.我想在footertemplate里添加文本框. 如果用后台代码添加 解决方案 GridView添加自定义控件wpf GridView 动态添加 GridViewColumn 及绑定控件 解决方案二: 参考:http://www.bkjia.com/Asp_Netjc/443899.html

求助动态添加控件

问题描述 今天遇到个困难,要动态添加控件.大致内容如下:有一个TABA下面有两个TAB,分别为a,b.TABa里面有多个TEXTBOX,TABb里面有多个GRIDVIEW和按钮.点ADD按钮的时候,TABA以及里面所有控件增加一组.请问这种动态的添加控件的方法大致是什么?添加的控件要如何绑定事件呢?

wpf-WPF动态添加控件,控件大小不定能不能跟随窗口大小变化

问题描述 WPF动态添加控件,控件大小不定能不能跟随窗口大小变化 WPF新手一个,现在要做个界面向里面动态添加GROUPBOX,嵌套在一个ScrollViewer中,希望能做到超过2个groupbox的时候可以横向滚动显示,现在动态添加能够做到,但是不好控制groupbox的大小,如果把控件大小写死了,窗口最大化就会乱,如果不写死添加控件的时候groupbox大小都不一样 <DockPanel Grid.Row="1"> <ScrollViewer Horizonta

extjs2.02 table布局下无法动态添加控件

问题描述 extjs2.02 table布局下无法动态添加控件 Ext.onReady(function() { var form = new Ext.form.FormPanel({ id: "testForm", renderTo: "windowDiv", width: "700", autoHeight: true, layout: "table", layoutConfig: { columns: 2 }, bord

c# tablelayoutpanel动态添加控件时Controls.Add(控件对象,0,0) 多次后不会在第一行添加了

问题描述 如题c#tablelayoutpanel动态添加控件时Controls.Add(控件对象,0,0)多次后不会在第一行添加了后面新增的都会在第二行第三行 解决方案