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. linux中安装firebird

    本在树莓派上安装sqlite,因为sqlite的多用户需要自己控制读写.最终选择稳定够用的fb2.5. 嵌入式无论哪一种fb都差不多. 1.安装 sudo apt-get install firebi ...

  2. Linux Nginx tomcat集群--打程序补丁步骤

    Linux Nginx Tomcat集群--打程序补丁步骤 一.若不知道服务器中nginx所在目录(知道目录位置,从第3条开始看) 1.查找nginx进程(默认80端口) netstat -lntup ...

  3. 如何对 Java 的垃圾回收进行调优?

    如何对 Java 的垃圾回收进行调优? Java 垃圾回收的调优涉及多个方面,从选择合适的垃圾回收器到调整堆内存的大小.配置 GC 参数等,下面是一些常见的调优方法: 1. 选择合适的垃圾回收器 不同 ...

  4. 多线程——ThreadPool

    参考:第三节:ThreadPool的线程开启.线程等待.线程池的设置.定时功能 - Yaopengfei - 博客园 (cnblogs.com) C# AppDomain 详解_勇于尝试,却要三思后行 ...

  5. PLSQL中&符号处理

    在SQL语句中的字符串中出现了&符号,当执行的时候会被认为是参数需要传递,如update product set brand = 'D&G'; 解决办法是把语句改为:update pr ...

  6. <HarmonyOS第一课09>应用程序框架进阶#鸿蒙课程##鸿蒙生态#

    课程介绍 本课程<应用程序框架进阶>旨在深入探讨应用程序框架的核心概念和高级特性.课程首先介绍应用程序框架的基本概念,确保学员对框架有全面的认识.接着,我们将深入探讨AbilityStag ...

  7. 【经验】IDA|python 脚本怎么使用反汇编的变量,以及获取反汇编地址上的值,附 IDA的output窗口被不小心关掉了的打开方式

    文章目录 IDA脚本怎么用变量--怎么获取目标文件内的值(python) 1 获取地址 2 获取地址上的值 可能出现的问题:NameError: name 'Byte' is not defined ...

  8. P10833 [COTS 2023] 下 Niz题解

    题意: 给定长度为 \(N\) 的序列 \(a\),求满足以下条件的 \((l,r)\) 对数: \(1\le l\le r\le N\): \(a_l,a_{l+1},\cdots,a_{r-1}, ...

  9. skip

    哇酷哇酷,和你的春天一样稍纵即逝的夏天 藏什么藏呢 自卑吗 你以为是缺点的 恰恰让我喜欢 但要短确实很短 说难是很难 而且烂 恰到好处吧 好男人也没的身手! 为了足以被好男人拯救 我在练习 结果是腿废 ...

  10. Python中的模块包

    dir0/dir1/dir2/mod.py,dir0必须在环境变量中,可以import dir1,import dir1.dir2.mod.但在python3.3之前,dir1和dir2下必须存放一个 ...