https://blog.csdn.net/cxu123321/article/details/104812099
https://blog.csdn.net/biyusr/article/details/7239911

是否显示在属性面板上
[Browsable(true)
属性面板上面的说名
[Description("控件颜色"), Category("自定义"), DefaultValue("")]

下拉选择需要的属性时可通过枚举来定义需要的值
public enum luocore { 你,我,他 }

        private luocore controleColor;
        [Browsable(true)]
        [Description("控件颜色"), Category("自定义"), DefaultValue("")]
        public luocore ControleColor
        {
            get { return controleColor; }
            set { controleColor = value; }
        }

ToolboxItem


有没有试过写一个用户控件后,想它不出现在工具箱中,当然有,有时候是控件的Designer部分没有写好或没写,有时候是控件一拖出来就报错,有时候是内部使用的控件,不想别人一引用DLL就出现控件。其它设置方法可以很简单。


  1. ToolboxItem(false)]
  2. public class MyPanel : UserControl
  3. {
  4. }

这样就可以了。“可恶”的用户控件就自动隐藏了,不出现在工具箱中。

ToolboxBitmap

写好一个用户控件后,在工具箱中出来的是一个蓝色的齿轮,这就不是很漂亮了,也不能够直观地表达自己的意图。如果更不幸的你的控件的名称好难认的话,其它的开发者会很麻烦的。怎样才能让用户控件在工具箱中显示不同的图标呢?

  1. ToolboxBitmap(typeof(System.Windows.Forms.Panel))]
  2. public class MyPanel : UserControl
  3. {
  4. }

这样就可以了,表示你所做的用户控件使用的图标是Panel的图标。
如果不想用系统的图标,要使用自己的图标,可以这样

    1. [ToolboxBitmap(typeof(MyPanel), "WindowsApplication1.Images.MyPanel.bmp")]
    2. public class MyPanel : UserControl
    3. {
    4. }
      不过,一定要注意路径,WindowsApplication1.Images.MyPanel.bmp表示,解决方案是WindowsApplication1,目录是Images,文件名是MyPanel.bmp,同时,这个图片必须是“嵌入的资源”(点击文件,右键,属性,有一个文件属性,其中,在生成操作中,可以选择"嵌入的资源"
       
       
       

      DesignerSerializationVisibility

      表示,是否在*.Designer.cs文件中将设置的代码写出来,也就是是否要实现序列化。默认为
      [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]表示需要实现序列化。
      如果设置为hidden:

      1. [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
      2. public List<Person> Persons { get; set; }
      • 1
      • 2

      将不会被序列化:

      如果自定义控件中有些属性不需要显示在属性面板或者不需要序列化时,建议hidden掉

 

https://www.cnblogs.com/qingtianhua/p/3524526.html

EditorBrowsable特性 控制智能提示


[EditorBrowsable(EditorBrowsableState.Never)]
他的作用是:在编辑器中指定属性或方法的可浏览状态。

EditorBrowsableState.Never的枚举说明是:该属性或方法始终不能在编辑器中浏览。

意思就是说,让使用者在调用的时候无法智能感知出Object默认的方法

只有在发布DLL后被人引用才可以隐藏方法。同解决方案下的引用无法隐藏

http://cache.baiducontent.com/c?m=QoVcvCMr0LrQgfs4HZt4T_jI7GGLvjJMVfPlSUenI0UgSBaEjFLn-QzhT_gHReuzPQwohxGTjuzEa2kJBVaCjkUAK9_UhTd2VEOIWtGT9sKmJCS11uistN34-qT2Ys4etlH6oZookRrfT3snrn4J4pFmFLLbxdGEfUr6QzjkxeuaVlLDW4WORE6ULJYGtrjq6o8gu98MsVJISSATJ3jmTK&p=c97dc64ad4934eac58eac16f5a5190&newp=882a9645d18718e90be2963e1c079f231610db2151d4d5146b82c825d7331b001c3bbfb422201107d5ce77630aa84c5eecf53278310923a3dda5c91d9fb4c57479cc7e72&s=cfcd208495d565ef&user=baidu&fm=sc&query=C%23+SRCategoryAttribute+%CE%DE%B7%A8%B7%C3%CE%CA&qid=829b826300061677&p1=9

523083.html 的作者无关,不对其内容负责。百度快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

 

C# Attribute简介

一 、EventAttribute有:

BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、DefaultEventAttribute

PropertyAttribute有:

BrowsableAttribute 、CategoryAttribute、DescriptionAttribute、
DefaultPropertyAttribute、DefaultValueAttribute、EditorAttribute 、
DesignerSerializationVisibilityAttribute、TypeConverterAttribute、
BindableAttribute、LocalizableAttribute       



上述的Attribute简明阐述如下:

             BrowsableAttribute:在Property窗口中是否可见。

             CategoryAttribute:Property或者Event所属的哪个组。

             DescriptionAttribute:Property或者Event的简单描述。

             DefaultEventAttribute:默认Event、。

             DefaultPropertyAttribute:默认Property,选中组件,其Property窗口中默认选中在这个Property上。

             DefaultValueAttribute:Property的默认值,选中组件,其Event窗口中默认选中在这个Event上。

二、

我们来看看在控件设计中有哪些主要用到的设计时Attribute

   BrowsableAttribute:描述是否一个属性或事件应该被显示在属性浏览器里。

   CategoryAttribute:描述一个属性或事件的类别,当使用类别的时候,属性浏览器按类别将属性分组。

   DescriptionAttribute:当用户在属性浏览器里选择属性的时候,description里指定的文本会显示在属性浏览器的下边,向用户显示属性的功能。

   BindableAttribute:描述是否一个属性倾向于被绑定。

   DefaultPropertyAttribute:为组件指定一个默认的属性,当用户在Form设计器上选择一个控件的时候,默认属性会在属性浏览器里被选中。  

   DefaultValueAttribute:为一个简单类型的属性设置一个默认值。

   EditorAttribute:为属性指定一个特殊的编辑器。

   LocalizableAttribute:指示一个属性是否能被本地化,任何有这个Attribute的属性将会被持久化到资源文件里。  

   DesignerSerializationVisibilityAttribute:指示一个属性是否或者如何持久化到代码里。

   TypeConverterAttribute:为属性指定一个类型转换器,类型转换器能将属性的值转化成其它的数据类型。

   DefaultEventAttribute:为组件指定一个默认的事件,当用户在form设计其中选择一个控件的时候,在属性浏览器中这个事件被选中。

   这些设计时的Attribute时很重要的,如果使用的好,将会对用户的使用带来很大的便利。

												

C# 自定义控件一些特性标识,重写WinForm 控件,重写控件的更多相关文章

  1. Winform控件重写

    Winform控件重写 因为最近的项目中越来越多的遇到了比较特殊的一些控件,有时候我们自己封装一下可能更加方便我们的使用,下面是我们项目中用到的,简单做一个记录. TextBox控件重写 主要的控制代 ...

  2. Android 自定义View 三板斧之三——重写View来实现全新控件

    通常情况下,Android实现自定义控件无非三种方式. Ⅰ.继承现有控件,对其控件的功能进行拓展. Ⅱ.将现有控件进行组合,实现功能更加强大控件. Ⅲ.重写View实现全新的控件 本文来讨论最难的一种 ...

  3. C# WinForm自定义通用分页控件

    大家好,前几天因工作需要要开发一个基于WinForm的小程序.其中要用到分页,最开始的想法找个第三方的dll用一下,但是后来想了想觉得不如自己写一个玩一下 之前的web开发中有各式各样的列表组件基本都 ...

  4. 玩转控件:重写/重绘Dev中MessageBox弹窗控件

    很久没有更新博客了,本想着直接发一篇<手撕ERP>系列,从控件重写.重绘,到框架搭建,再到部分模块实现+业务的.但是每次动手的时候,都觉得难以下手.直接从数据库设计开始吧,模块设计还没定下 ...

  5. winform用户控件、动态创建添加控件、timer控件、控件联动

    用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...

  6. 富客户端 wpf, Winform 多线程更新UI控件

    前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...

  7. [转] WinForm实现移除控件某个事件的方法

    原文 WinForm实现移除控件某个事件的方法 本文实例讲述了WinForm实现移除控件某个事件的方法,供大家参考借鉴一下.具体功能代码如下: 主要功能部分代码如下: /// <summary& ...

  8. Winform中修改WebBrowser控件User-Agent的方法(已经测试成功)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  9. WPF中嵌入WinForm中的webbrowser控件

    原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...

  10. C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

    C# winform项目中ListView控件使用CheckBoxes属性实现单选功能 在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes ...

随机推荐

  1. Git Bash 无法输入中文

    场景重现 有个小伙伴的电脑上 Git Bash 里死活无法输入中文, 导致 git 提交信息没法用中文写... git commit -m "无法输入中文" 解决办法 在 Git ...

  2. halcon 入门教程(三) 边缘检测

    原文作者:aircraft 原文链接:halcon 入门教程(三) 边缘检测 有兴趣可以多看其他的halcon教程 halcon 学习教程目录 本篇讲一下边缘检测(边缘提取),因为这个我发现也是比较常 ...

  3. NGUI和UGUI的区别

    1.NGUI的渲染前后顺序是通过Widget的Depth,而UGUI渲染顺序根据Hierarchy的顺序,越下面渲染在顶层 2. NGUI支持图文混排,UGUI暂未发现支持此功能. 3.UGUI没有 ...

  4. Java 里的对象在虚拟机里面是怎么存储的?

    Java 中的对象在虚拟机里的存储 在 Java 中,对象在虚拟机中的存储方式取决于 JVM 内存模型,主要存储在 堆(Heap) 中.对象的内存布局和管理方式会影响对象的创建.访问和销毁.下面详细解 ...

  5. DPDI online在线调度系统环境部署

    DPDI online简介: DPDI Online 是一款基于Kettle的强大在线任务调度平台,凭借其高效与灵活性,专为调度和监控Kettle客户端生成的ETL任务而设计 DPDI online部 ...

  6. jmeter操作数据库增删改查的注意事项

    一,场景 1.在jmeter造数据后,可通过数据库查询数据库是否新增数据,判断脚本执行是否成功. 2.有些数据新增不可重复,因此脚本执行后需要将新增的数据删除,才能再次执行脚本. 二.连接数据库 在通 ...

  7. svg标签元素定位最有效的办法

    随着前端技术发展,svg(可伸缩矢量图形 )在前端应用中广泛被使用,然而采用传统的xpath元素定位方法已经无法对其进行定位,我们需要将svg标签及其包含的子标签用以下方式表达: *[name()=& ...

  8. HarmonyOS运动开发:如何集成百度地图SDK、运动跟随与运动公里数记录

    前言 在开发运动类应用时,集成地图功能以及实时记录运动轨迹和公里数是核心需求之一.本文将详细介绍如何在 HarmonyOS 应用中集成百度地图 SDK,实现运动跟随以及运动公里数的记录. 一.集成百度 ...

  9. 彻底掌握 PCA 降维

    PCA 这类的降维算法, 我算是接触好几年了有, 从我学营销的时候, 市场研究方面就经常会用到,相关的还有 "因子分析" 比如, 商品形象认知, 客户细分等场景. 其实多年前我就能 ...

  10. TypeScript实用技巧大杂烩,助你成为真正的全栈工程师

    @charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...