【问题标题】:How to initialize user control sub controls when late binding后期绑定时如何初始化用户控件子控件
【发布时间】:2015-02-11 14:13:37
【问题描述】:

我有一个用户控件,上面有一个 webbrowser 控件,编译成它自己的程序集。在将其分解为自己的程序集之前,此控件在我的项目中有效。

现在这样做的目标是后期绑定到程序集,实例化控件,并将其添加到表单上的选项卡控件中。

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。

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

感谢您的帮助, 蒂姆

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 1970-01-01
      • 1970-01-01
      • 2019-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多