本主题列出了开发组件和控件时出现的以下常见问题:
无法向工具箱添加控件
无法调试 Windows 窗体用户控件或组件
在继承的控件或组件中引发两次事件
Design-Time 错误:“无法创建组件'组件名称'”
STAThreadAttribute
组件图标未显示在工具箱中
无法向工具箱添加控件
如果要将在另一个项目或第三方控件中创建的自定义控件添加到 工具箱中,则必须手动执行此作。 如果当前项目包含控件或组件,它应自动显示在 工具箱 中。 有关详细信息,请参阅 操作指南:使用自定义组件自动填充工具箱。
将控件添加到工具箱
右键单击 工具箱 ,然后从快捷菜单中选择“ 选择项”。
在“ 选择工具箱项 ”对话框中,添加组件:
如果要添加 .NET Framework 组件或控件,请单击 “.NET Framework 组件 ”选项卡。
–或–
如果要添加 COM 组件或 ActiveX 控件,请单击“ COM 组件 ”选项卡。
如果控件在对话框中列出,请确认它已选中,然后单击“ 确定”。
该控件将添加到 工具箱中。
如果控件未在对话框中列出,请执行以下操作:
单击“ 浏览 ”按钮。
浏览到包含 .dll 文件的文件夹,该文件中包含您的控件。
选择 .dll 文件,然后单击“ 打开”。
您的控件将出现在对话框中。
确认已选择控件,然后单击“ 确定”。
控件将添加到 工具箱中。
无法调试 Windows 窗体用户控件或组件
如果控件派生自 UserControl 该类,则可以使用测试容器调试其运行时行为。 有关详细信息,请参阅 如何:测试 UserControl 的 Run-Time 行为。
其他自定义控件和组件不是独立项目。 它们必须由 Windows 窗体项目等应用程序托管。 若要调试控件或组件,必须将它添加到 Windows 窗体项目。
调试控件或组件
在“ 生成 ”菜单中,单击“ 生成解决方案 ”以生成解决方案。
在“ 文件 ”菜单中,选择“ 添加”,然后选择 “新建项目 ”,将测试项目添加到应用程序。
在“ 添加新项目 ”对话框中,为项目类型选择 Windows 应用程序 。
在 解决方案资源管理器中,右键单击新项目的 “引用 ”节点。 在快捷菜单上,单击“ 添加引用 ”以添加对包含控件或组件的项目的引用。
在测试项目中创建控件或组件的实例。 如果组件位于 工具箱中,则可以将其拖动到设计器图面,也可以以编程方式创建实例,如以下代码示例所示。
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将图标与您的自定义组件相关联时,位图不会出现在工具箱中的自动生成组件内。 若要查看位图,请通过使用 选择工具箱项 对话框来重新加载控件。 有关详细信息,请参阅 “如何:为控件提供工具箱位图”。