如何在后期绑定时初始化用户控件子控件

时间:2015-02-11 14:13:37

标签: vb.net winforms user-controls late-binding

我有一个带有webbrowser控件的usercontrol,它被编译到它自己的程序集中。在将其分解为自己的程序集之前,此控件在我的项目中有效。

现在,执行此操作的目的是延迟绑定到程序集,实例化控件,并将其添加到我的表单上的选项卡控件中。

Dim objAssembly As Reflection.Assembly
objAssembly = Reflection.Assembly.LoadFrom(My.Application.Info.DirectoryPath + "\ppbb.dll")
Me._SelectionDetail1 = objAssembly.CreateInstance("ppbb.SelectionDetail")

当我单步执行此代码时,它似乎创建了对象,但是当我尝试将一些html设置为usercontrol上的webbrowser控件时,它就是nullrefs。

我是否需要在usercontrol上调用初始化程序? 我可以延迟绑定用户控件吗?

感谢您的帮助, 添

1 个答案:

答案 0 :(得分:0)

当您收到NullReferenceException时,可能意味着objAssembly.CreateInstance返回Nothing,因为它找不到您请求的类型(使用调试器检查)。

确保指定类型名称正确。如果您的控件MyControl位于命名空间Test内的模块MyLib内(为了示例,只是一些随机名称),您必须使用objAssembly.CreateInstance("MyLib.Test+MyControl")

如果有疑问,只需使用调试器检查objAssembly.GetTypes()以获取该程序集中所有类型的列表,查找控件的Type,并检查FullName属性Type

这是您必须使用的字符串,因此CreateInstance会找到Type