在运行时创建用户控件对象

时间:2012-01-05 04:04:55

标签: vb.net user-controls

请帮我在运行时使用createobject函数或vb.net中的任何更好的函数创建用户控件对象。

这是我的代码:

Dim b As New Security.Sec_Role
b.Name = "Sec_Role" 
b.visible = true

但我想使用此代码:

dim b as object
b = createobject("Security.Sec_Role")

但它总是返回错误:

Cannot create ActiveX component.

编辑:我想通了..谢谢了很多..我用这个代码:

Dim asm As System.Reflection.Assembly = Assembly.Load("Security")
Dim b As Object = Activator.CreateInstance(asm.GetType("Security.Sec_Role"))

3 个答案:

答案 0 :(得分:2)

如果是.Net UserControl,除非根据CreateObject的MSDN页面将其公开为Com对象,否则您将无法使用CreateObject。使用New将是创建.Net UserControl的正确方法。

从上面链接:

  

创建并返回对COM对象的引用。 CreateObject不能   用于在Visual Basic中创建类的实例,除非这些   类明确地公开为COM组件。

从此MSDN Forum尝试使用System.Activator.CreateInstance

Dim oType As System.Type = Type.GetType("MyNamespace.ClassName")
Dim obj = System.Activator.CreateInstance(oType)

答案 1 :(得分:1)

.Net类不是ActiveX控件 你不能这样做。

您可能正在寻找反思或词典。

答案 2 :(得分:1)

您需要使用Activator.CreateInstance

Dim b as object
b = Activator.CreateInstance(Nothing, "Sec_Role")

如果此方法位于具有控件的程序集中,则最简单。否则,您需要在第一个参数中提供程序集名称。

相关问题