项目总结[5]--如何为自定义的控件在工具箱中自定义个性化的图标

原创 2004年01月12日 17:10:00

很多朋友都为自己编写各自使用的控件,但是所有的控件默认在工具箱中的图片都是单一的图标—齿轮。如何为自定义的控件在工具箱中自定义个性化的图标<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

背景:作者在编写了一个中间带数字的进度条的控件过程中,突然发现添加在工具箱中的图有点单一,于是产生了如何改用自己定义图的方式来做工具箱的图,于是查询大量的资料,翻译此文如下.该文章和原文有点出入,我修改其中一些Bug,改用自己的实例来做下面叙述. 

下面你可以通过不同的方法来完成。在下面例子中,bitmap 或icon图片必须遵循下面的规则

1、Bitmap 或icon尺寸不许是16色 16 X 16

2、底色必须是透明的

 

技术方案1: 用一个bitmap图片(不能是一个icon图片,嵌入资源)文件

不需要使用特别的ToolboxBitmapAttribute类来实现.

例如你有一个命名空间CarryNoProgramBar,自定义控件为Bar的项目。

1按照上面图片规则来建立一个命名为Bar.bmp的图片,添加该图片到你的项目,

2把该Bar.bmp的图片设置属性 生成操作设置为à嵌入的资源

3注意该图片的命名空间必须也是CarryNoProgramBar

4如果该控件的命名空间和项目的默认命名空间不匹配,你必须把该bitmap图片移到适当的子目录让他们匹配。如果你使用该方法无效,很显然你不能使用该技术来实现你自定义图片,你可以下面ToolboxBitmap属性技术来实现

5.注明我使用直接在根目录中的方式取的工具箱中的图标。

上面简单的技术来实现你的需求,而不需要你去使用ToolboxBitmapAttribute去产生你的类型

技术解决方案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 

{...}

}

本作者建议请直接使用同一个命名空间来调用工具箱中的图标问题,

如何为自定义控件在工具箱中自定义个性化图标

很多朋友都为自己编写各自使用的控件,但是所有的控件默认在工具箱中的图片都是单一的图标—齿轮。如何为自定义的控件在工具箱中自定义个性化的图标背景:作者在编写了一个中间带数字的进度条的控件过程中,突然发现...
  • naive1010
  • naive1010
  • 2008年03月30日 09:24
  • 957

自定义控件在 控件在 VS 工具箱 中的图标

有时我们在vs2005的工具箱中添加第三方控件时,会发现会有其自定义的图标。而我们在不作任何处理的情况下,在生成控件并放到工具箱中时,是使用默认的图标,样子有点难看~~如何自定义图标呢?我使用的是To...
  • daonidedie
  • daonidedie
  • 2007年12月04日 17:10
  • 994

自定义winform控件如何添加到工具箱

1.  工具=》选项=》Windows窗体设计器=》常规=》AutoToolBoxPopulate=》True 2....
  • m1654399928
  • m1654399928
  • 2014年07月21日 10:19
  • 2646

VS2008让项目中的自定义控件编译后自动添加到工具箱中

在VS2008中,如果在项目里写了一个用户控件,编译后这个控件是不会自动出现到工具箱的,按如下设置就可以解决这个问题   工具=》选项=》Windows窗体设计器=》常规=》AutoToo...
  • Plutus_Lee
  • Plutus_Lee
  • 2014年06月07日 15:49
  • 2270

向 echarts图标工具栏toolbox中加入自定义图标/图形

向 echarts图标工具栏toolbox中加入自定义图标/图形 echarts
  • singsingasong
  • singsingasong
  • 2017年08月16日 17:00
  • 607

VS 用户自定义控件未出现在工具箱的解决方案

在项目中增加几个用户自定义控件,想及时在窗口Form上添加时却发现工具箱根本就没有这些用户自定义控件,研究了很久,发现有两个解决办法。通过以下两种方法操作后,再重新编译,在工具箱上就会出现用户自定义控...
  • aoshilang2249
  • aoshilang2249
  • 2015年04月25日 15:22
  • 5242

C#(winform) 工具箱中添加自定义的组件

今天在博客园上看到一个博客,是关于Winform分页控件使用详细介绍 ,觉的这个控件非常不错,所以就把这封装好的控件down下来,试用一下,这就碰到问题了,那如何在工具箱中添加控件呢?这是我经过 摸索...
  • ccx_john
  • ccx_john
  • 2013年12月28日 13:06
  • 6392

win7中删除自定义主题

首先,不要选择自己创建的主题,单击“Aero  主题”下的任一主题。然后右键你想删除的自定义主题,选择“删除主题”即可。...
  • hymer2011
  • hymer2011
  • 2011年05月06日 17:33
  • 2324

C#自定义控件UserControl在工具箱中没有显示的解决办法

如果自定义的UserControl在工具箱中没有显示出来,可能是系统设置不自动显示自定义控件所致,按如下设置即可在工具箱中显示自定义的UserControl控件了。 工具=》选项=》Window...
  • shifeilongsuper
  • shifeilongsuper
  • 2016年02月17日 18:50
  • 1160

Mac OS使用技巧之七:个性化自己的Mac OS主界面

Mac OS的亮点之一就在于它精炼美观的主界面。Mac OS的界面跟我们熟悉的windows是截然不同的,赋予了桌面新的定义,能够完美的体现一张牛X的壁纸,是有多么的吸引人。...
  • u012200908
  • u012200908
  • 2014年09月10日 11:47
  • 22030
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:项目总结[5]--如何为自定义的控件在工具箱中自定义个性化的图标
举报原因:
原因补充:

(最多只允许输入30个字)