排除控件和组件创作故障
本主题列出了开发组件和控件时遇到的常见问题:
无法将控件添加到工具箱
无法调试 Windows 窗体用户控件或组件
在继承的控件或组件中引发了两次事件
设计时错误:“创建组件‘组件名称’失败”
STAThreadAttribute
组件图标未出现在工具箱中
无法将控件添加到工具箱
如果要将在另一项目中创建的自定义控件或第三方控件添加到“工具箱”中,必须手动操作。 如果当前项目中包含控件或组件,它应自动显示在“工具箱”中。 有关详细信息,请参阅演练:使用自定义组件自动填充工具箱。
将控件添加到工具箱
右键单击“工具箱”,并从快捷菜单中选择“选择项”。
在“选择工具箱项”对话框中,添加组件:
如果要添加 .NET Framework 组件或控件,请单击“.NET Framework 组件”选项卡。
- 或 -
如果要添加 COM 组件或 ActiveX 控件,请单击“COM 组件”选项卡。
如果对话框中列出了该控件,请务必将它选中,然后单击“确定”。
该控件即会添加到“工具箱”中。
如果对话框中未列出该控件,请执行以下操作:
单击“浏览”按钮。
浏览到包含 .dll 文件(它包含控件)的文件夹。
选择 .dll 文件并单击“打开”。
控件即会出现在对话框中。
确认选中该控件,然后单击“确定”。
控件即会添加到“工具箱”中。
无法调试 Windows 窗体用户控件或组件
如果控件派生自 UserControl 类,则可以借助测试容器对它的运行时行为进行调试。 有关详细信息,请参阅如何:测试 UserControl 的运行时行为。
其他自定义控件和组件不是独立的项目。 它们必须由 Windows 窗体项目这样的应用程序承载。 若要调试控件或组件,必须将其添加到 Windows 窗体项目。
调试控件或组件
在“生成”菜单中,单击“生成解决方案”来生成解决方案。
在“文件”菜单中,选择“添加”,然后选择“新建项目”,将测试项目添加到应用程序中。
在“添加新项目”对话框中选择“Windows 应用程序”作为项目类型。
在“解决方案资源管理器”中,右键单击新项目的“引用”节点。 在快捷菜单上单击“添加引用”,为包含控件或组件的项目添加引用。
在测试项目中创建控件或组件的实例。 如果组件在“工具箱”中,则可将其拖动到设计器图面,或者以编程方式创建实例,如下面的代码示例所示。
Dim Component1 As New MyNeatComponent()
MyNeatComponent Component1 = new MyNeatComponent();
现在即可像平常一样调试控件或组件。
有关调试的详细信息,请参阅在 Visual Studio 中进行调试和演练:在设计时调试自定义 Windows 窗体控件。
在继承的控件或组件中引发了两次事件
这可能是由于重复的 Handles
子句引起的。 有关详细信息,请参阅有关 Visual Basic 中继承的事件处理程序的疑难解答。
设计时错误:“创建组件‘组件名称’失败”
组件或控件必须提供一个不带参数的无参数构造函数。 设计环境创建组件或控件的实例时,不会尝试为使用参数的构造函数重载提供任何参数。
STAThreadAttribute
STAThreadAttribute 会向公共语言运行时 (CLR) 发出通知,指出 Windows 窗体使用了单线程单元模型。 如果没有对 Windows 窗体应用程序的 Main
方法应用此特性,则可能会出现意外的行为。 例如,ListView 等控件的背景图像可能无法显示。 某些控件也可能需要此属性才能正确地实现自动完成和拖放行为。
组件图标未出现在工具箱中
使用 ToolboxBitmapAttribute 将图标与自定义组件关联时,对于自动生成的组件,位图将不会出现在工具箱中。 若要查看位图,请使用“选择工具箱项”对话框重载控件。 有关详细信息,请参阅如何:为控件提供工具箱位图。