我做了直接从ErrorProvider控件继承控制。 我认为,应用它的ToolboxBitmap属性就足以让我的控制有工具箱上的相同的图标为原控制了,但事实并非如此。 很奇怪,好像我的控件添加到窗体,它只是因为它应该出现,但它不会改变工具箱中的图标。 我缺少的是在这里吗? 我已经重新启动Visual Studio和它保持这种行为。
[ToolboxBitmap(typeof(ErrorProvider))]
public class ErrorProviderEx : ErrorProvider {
...
}
在Visual Studio 2008中,通过指定的图标ToolBoxBitmap
不添加到工具箱中的任何出于性能考虑当前解决方案的组成部分。 使用标准的“齿轮”图标。 如果手动从工具箱添加组件...新增项目对话框中,自定义图标会显示这是您所遇到的行为。 此外,当你拖动ErrorProviderEx到一个表单,您所指定的图标将被使用,而这又是你在注释中提到的行为。
请注意,你的情况,你正在使用typeof(ErrorProvider)
这样你就不必使用自定义位图的正常问题。
(这种行为也可以用于Visual Studio 2005的Visual Studio 2003中通过显示图标宠坏我们莫不如此。)(我个人不喜欢这个新的行为。我愿意等待一个额外的第二个或两个IDE来检索图标解决方案中的所有控件和组件。我不知道是否有一个注册表黑客以显示图标。)
它是在同一个项目? 或DLL你引用?
referncing一个固定的DLL时,你只得到适当的图标。 尝试建立一个控制DLL和引用它。
因此,有一个变通。 假设你的用户控件中显示“myControl”工程,referrence添加到自身。 那就是:在MyControl项目Referrence MyControl项目,就像你在另一个项目做。 然后图标会显示在MyControl项目的工具箱,太。
最简单的方法,以确保在工具栏图标将显示是创建一个16x16的bmp文件,放置在你的控件的项目文件夹,然后将其设置为嵌入的资源。
让我们跟随一个相对简单的例子:假设你有一个名为MyCompany.Components.MyControl组件。 创建一个16×16位的将它保存到MyCompany.Components.MyControl项目文件夹MyControl.bmp的根源。 然后右键单击该文件MyControl.bmp,选择属性>生成操作>嵌入的资源 。 在这一点上,你有一个步骤:添加ToolboxBitmap属性类定义的上方(如果使用部分类,我将在控制的主要cs文件属性 - 不是在Designer.cs文件)。 要做到这一点,使用此语法:
[ToolboxBitmap(typeof(MyControl), "MyControl.bmp")]
一定要确保:
- 您MyControl项目类的命名空间为您的项目出现在溶液中的文件夹结构相匹配。
- 似乎是显而易见的,但要确保你已经列举了您的BMP文件的正确名称。
只要您的控件添加到工具箱中,无论是手动添加或编程方式添加你的位图应该会出现。