我自己做了个控件,想放个图标进去(主要是为了显得专业~)
一切的一切全按照网上的方法来的
16×16位图Btmap.bmp在根目录下,
类名Btmap,
ToolboxBitmap(typeof(Btmap),"Btmap.bmp"),
Btmap.bmp设置为嵌入的资源
为什么我拖到工具箱里就是没有图标呢??
十分费解。
一切的一切全按照网上的方法来的
16×16位图Btmap.bmp在根目录下,
类名Btmap,
ToolboxBitmap(typeof(Btmap),"Btmap.bmp"),
Btmap.bmp设置为嵌入的资源
为什么我拖到工具箱里就是没有图标呢??
十分费解。
[ToolboxBitmapAttribute(typeof(YourControl), "YourControlIcon.bmp")]
public class YourControl: System.Windows.Forms.UserControl
这句已经加了,路径没有问题。完完全全按照网上的方法做的,但就是不行,用绝对路径也不行
是16×16的位图,这个我已经验证过了,郁闷啊。这个小问题搞了我一早上。期待用过的高手来指点指点。
不对的,应该是
ToolboxBitmap(typeof(Btmap),"xxx.Btmap.bmp"),
xxx.Btmap.bmp是资源名
这里的xxx是你图片所在项目的首命名空间,通常是项目名
Type t,
string name
)假设 t 类型的命名空间是 NamespaceA.NamespaceB.NamespaceC (t 类型是可以任意的,不必是要应用此特性的那个类),且 t 定义在程序集 AssemblyA.dll,同时 name 指定为 cool.bmp , 那么构造函数在 AssemblyA.dll 中寻找资源名为 Namespace1.SubNamespace2.SubNamespace3.cool.bmp 的资源文件其次,对于嵌入资源,编译之后 .net 会自动为资源文件加上命名空间前缀,也就是说,有实际文件名为 cool.bmp 的资源文件,编译之后程序集内的资源名不并总是为 cool.bmp, 除非你的程序集没有顶级命名空间。
比如,coolA.bmp 在项目根目录,coolB.bmp 在项目中的 FolderB
项目的顶级命名控件是 NamespaceA
那么编译之后,以上两个 bmp 的资源名分别为 NamespaceA.coolA.bmp 和 NamespaceA.FolderB.coolB.bmp (注意这里自动加上 文件夹名 FolderB )结合以上两点,我们应该注意,当指定 t 和 name 的时候,要注意 t 的命名空间 以及 name 所在的路径,.net 按后者路径生成的资源名要与 t 的命名空间能够匹配。