对控件和组件创作进行故障排除

本主题列出了开发组件和控件时出现的以下常见问题:

  • 无法向工具箱添加控件

  • 无法调试 Windows 窗体用户控件或组件

  • 在继承的控件或组件中引发两次事件

  • Design-Time 错误:“无法创建组件'组件名称'”

  • STAThreadAttribute

  • 组件图标未显示在工具箱中

无法向工具箱添加控件

如果要将在另一个项目或第三方控件中创建的自定义控件添加到 工具箱中,则必须手动执行此作。 如果当前项目包含控件或组件,它应自动显示在 工具箱 中。 有关详细信息,请参阅 操作指南:使用自定义组件自动填充工具箱

将控件添加到工具箱

  1. 右键单击 工具箱 ,然后从快捷菜单中选择“ 选择项”。

  2. 在“ 选择工具箱项 ”对话框中,添加组件:

    • 如果要添加 .NET Framework 组件或控件,请单击 “.NET Framework 组件 ”选项卡。

      –或–

    • 如果要添加 COM 组件或 ActiveX 控件,请单击“ COM 组件 ”选项卡。

  3. 如果控件在对话框中列出,请确认它已选中,然后单击“ 确定”。

    该控件将添加到 工具箱中。

  4. 如果控件未在对话框中列出,请执行以下操作:

    1. 单击“ 浏览 ”按钮。

    2. 浏览到包含 .dll 文件的文件夹,该文件中包含您的控件。

    3. 选择 .dll 文件,然后单击“ 打开”。

      您的控件将出现在对话框中。

    4. 确认已选择控件,然后单击“ 确定”。

      控件将添加到 工具箱中。

无法调试 Windows 窗体用户控件或组件

如果控件派生自 UserControl 该类,则可以使用测试容器调试其运行时行为。 有关详细信息,请参阅 如何:测试 UserControl 的 Run-Time 行为

其他自定义控件和组件不是独立项目。 它们必须由 Windows 窗体项目等应用程序托管。 若要调试控件或组件,必须将它添加到 Windows 窗体项目。

调试控件或组件

  1. 在“ 生成 ”菜单中,单击“ 生成解决方案 ”以生成解决方案。

  2. 在“ 文件 ”菜单中,选择“ 添加”,然后选择 “新建项目 ”,将测试项目添加到应用程序。

  3. 在“ 添加新项目 ”对话框中,为项目类型选择 Windows 应用程序

  4. 解决方案资源管理器中,右键单击新项目的 “引用 ”节点。 在快捷菜单上,单击“ 添加引用 ”以添加对包含控件或组件的项目的引用。

  5. 在测试项目中创建控件或组件的实例。 如果组件位于 工具箱中,则可以将其拖动到设计器图面,也可以以编程方式创建实例,如以下代码示例所示。

    Dim Component1 As New MyNeatComponent()
    
    MyNeatComponent Component1 = new MyNeatComponent();
    

    现在可以像往常一样调试控件或组件。

有关调试的详细信息,请参阅 Visual Studio 中的调试演练:在设计时调试自定义 Windows 窗体控件

在继承控件或组件中,事件被触发两次

这可能是由于重复的Handles子句造成的。 有关详细信息,请参阅 Visual Basic 中的继承事件处理程序疑难解答

Design-Time 错误:“无法创建组件'组件名称'”

组件或控件必须提供一个无参数构造函数。 当设计环境创建组件或控件的实例时,它不会尝试向采用参数的构造函数重载提供任何参数。

STAThreadAttribute

STAThreadAttribute 通知公共语言运行时 (CLR) Windows 窗体使用单线程单元模型。 如果不将此属性应用于 Windows 窗体应用程序的方法 Main,你可能会注意到非预期的结果。 例如,背景图像可能不会出现在某些控件上,例如 ListView。 某些控件可能还需要此属性来正确执行自动完成和拖放行为。

组件图标未显示在工具箱中

当您使用ToolboxBitmapAttribute将图标与您的自定义组件相关联时,位图不会出现在工具箱中的自动生成组件内。 若要查看位图,请通过使用 选择工具箱项 对话框来重新加载控件。 有关详细信息,请参阅 “如何:为控件提供工具箱位图”。

另请参阅