如何为自定义的控件在工具箱中自定义个性化的图标?
自己编写各自使用的控件,但是所有的控件默认在工具箱中的图片都是单一的图标—齿轮。如何为自定义的控件在工具箱中自定义个性化的图标呢?
有玩过的朋友吗?
问题点数:60、回复次数:6Top
1 楼tangyy(tang)回复于 2005-02-22 20:59:00 得分 1
问得不错!!Top
2 楼hedonister(冰戈)回复于 2005-02-22 21:03:45 得分 59
有啊,前段时间试了两个方法
方案1: 用一个bitmap图片(不能是一个icon图片,嵌入资源)文件
不需要使用特别的ToolboxBitmapAttribute类来实现.
例如你有一个命名空间CarryNoProgramBar,自定义控件为Bar的项目。
1按照上面图片规则来建立一个命名为Bar.bmp的图片,添加该图片到你的项目,
2把该Bar.bmp的图片设置属性 生成操作设置为à嵌入的资源
3注意该图片的命名空间必须也是CarryNoProgramBar
4如果该控件的命名空间和项目的默认命名空间不匹配,你必须把该bitmap图片移到适当的子目录让他们匹配。如果你使用该方法无效,很显然你不能使用该技术来实现你自定义图片,你可以下面ToolboxBitmap属性技术来实现
5.注明我使用直接在根目录中的方式取的工具箱中的图标。
上面简单的技术来实现你的需求,而不需要你去使用ToolboxBitmapAttribute去产生你的类型
Top
3 楼hedonister(冰戈)回复于 2005-02-22 21:04:10 得分 0
方案2:
使用ToolboxBitmap属性
使用一个和类型同名bitmap图片而非icon嵌入资源,默认的命名空间是CarryNoProgramBar
namespace CarryNoProgramBar{
[ToolboxBitmap(typeof(Bar))]
public class Bar : UserControl {...}
}
上面例运行当中,假定了你的项目根目录下存在一个命名为Bar.bmp嵌入资源图片,注意是你的图片和控件的命名空间的一致性
例2 如果你需要项目中存在子目录放你的图片,你可以修改为
namespace CarryNoProgramBar{
[ToolboxBitmap(typeof(Bar),"sub.Bar.bmp")]
public class Bar : UserControl
{......}
}
或者
[ToolboxBitmap(typeof(Bar),"sub.Bar.ico")]
通过子目录使用,你可以使用特殊的资源,当然也包括ico文件,必须注意我上面使用了一个sub的子目录
例3
有时候你的控件和图片不在同一个命名空间里,在下面的情况你必须在统一个命名空间里使用同一个类型的嵌入资源的图片
默认命名空间
namespace MyAssemblyNamespace{
public class SomeType
{...}
}
namespace DifferentNamespace
{
[ToolboxBitmap(typeof(SomeType), "Bar.ico")]
public class Bar : UserControl
{...}
}
Top
4 楼hedonister(冰戈)回复于 2005-02-22 21:04:51 得分 0
晕,忘说明了
上面例子中,bitmap 或icon图片必须遵循下面的规则
1、Bitmap 或icon尺寸不许是16色 16 X 16
2、底色必须是透明的
Top
5 楼supergoalcn(Supergoal)回复于 2005-03-26 22:51:34 得分 0
好有用的东西啊,总算试出来了,谢谢!Top
6 楼frankyshu()回复于 2005-08-04 08:21:00 得分 0
markTop




