ToolboxItem吧。属于System.ComponentModel。没有Toolbox。

解决方案 »

  1.   


    谢谢,我发现这个Attribute设置和不设置,生成的dll都能被winform应用程序用来添加控件。
    那么这个Attribute存在的时候,有什么额外的功能吗?还请大虾继续执教!
      

  2.   

    ToolboxItem  是工具箱项的基类,可显示在设计时环境的工具箱中。 工具箱项通常表示在设计模式文档中调用时要创建的组件。 ToolboxItem  类提供以下目的所需要的方法和属性:为工具箱提供工具箱项的显示属性、用于创建一个或多个组件、在工具箱数据库内实现持久性的自身序列化和自身反序列化。 可以为 ToolboxItem 类的实例配置要创建的名称、位图和类型,而不创建从 ToolboxItem 派生的类。 ToolboxItem  类也为自定义工具箱项的实现提供基类。 自定义的 ToolboxItem 可以创建多个组件。 若要实现自定义工具箱项,必须从 ToolboxItem 派生,并重写 CreateComponentsCore、Serialize 和 Deserialize 方法。 必须配置下列属性和方法,才能使 ToolboxItem 正确运行:•DisplayName  属性为工具箱项指定了在工具箱中显示时所用的标签。
    •TypeName  属性指定了工具箱项所创建的组件类型的完全限定名。 如果派生的类创建多个组件,则可能使用 TypeName 属性,也可能不使用,具体取决于 CreateComponentsCore 方法的重写是否依赖此属性的值。 
    •AssemblyName  属性指定了包含工具箱项创建的组件类型的程序集。
    •还可以用 Bitmap 属性指定要在工具箱中的工具箱项名称旁边显示的位图图像。
    •Filter  还可以根据需要包含任何 ToolboxItemFilterAttribute 对象(用来确定工具箱项是否可以用于特定组件)。
    •CreateComponentsCore  方法返回其中使用了此工具的、要插入的一个或多个组件实例。
    •Serialize  方法将工具箱项保存到指定的 SerializationInfo 中。
    •Deserialize  方法使用指定的 SerializationInfo 包含的状态信息来配置工具箱项。
    •如果没有重写 CreateComponentsCore 方法使其行为发生变化,则 Initialize 方法将配置工具箱项以创建指定类型的组件。
    •Locked  属性指示工具箱项的属性是否可以更改。 工具箱项通常在添加到工具箱后被锁定。 
    •Lock  方法锁定工具箱项。
    •如果 Locked 属性为 true,CheckUnlocked 方法将引发异常。http://msdn.microsoft.com/zh-cn/library/system.drawing.design.toolboxitem(v=vs.110).aspx
      

  3.   

    谢谢你的回复,但是似乎没有回答我的问题。问题是,我即使把Attribute改为:[ToolboxItem(false)]重新编译整个工程,仍然可以从工具箱里面添加和使用这个UserControl。这是为什么呢?
      

  4.   

    还有,就是你贴的msdn的备注里面说到的:
    ---------------------------------------------------------
    必须配置下列属性和方法,才能使 ToolboxItem 正确运行: • DisplayName 属性为工具箱项指定了在工具箱中显示时所用的标签。---------------------------------------------------------
    可是我在ide里面,察看windowsControlLibrary的编辑界面,如下图所示,并没有发现整个Control在Properties窗口里面有一个属性叫做DisplayName。
    那么这个所谓的DisplayName不是一个标准的属性吗? 为什么不出现呢?还请继续执教!
      

  5.   

    你看到的例子是开发VS的用户控件,还是DevExpress的控件?
      

  6.   

    就是VS2012旗舰版里面的。我不清楚你说的DevExpress是什么咚咚啊。
      

  7.   

    你在网上哪里看到的例子?会不会是他自定义个一个Attribute?