请帮我在运行时使用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"))
答案 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")
如果此方法位于具有控件的程序集中,则最简单。否则,您需要在第一个参数中提供程序集名称。