C# 自定义控件一些特性标识,重写WinForm 控件,重写控件
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就出现控件。其它设置方法可以很简单。
-
ToolboxItem(false)]
-
public class MyPanel : UserControl
-
{
-
}
这样就可以了。“可恶”的用户控件就自动隐藏了,不出现在工具箱中。
ToolboxBitmap
写好一个用户控件后,在工具箱中出来的是一个蓝色的齿轮,这就不是很漂亮了,也不能够直观地表达自己的意图。如果更不幸的你的控件的名称好难认的话,其它的开发者会很麻烦的。怎样才能让用户控件在工具箱中显示不同的图标呢?
-
ToolboxBitmap(typeof(System.Windows.Forms.Panel))]
-
public class MyPanel : UserControl
-
{
-
}
这样就可以了,表示你所做的用户控件使用的图标是Panel的图标。
如果不想用系统的图标,要使用自己的图标,可以这样
-
[ToolboxBitmap(typeof(MyPanel), "WindowsApplication1.Images.MyPanel.bmp")]
-
public class MyPanel : UserControl
-
{
-
}不过,一定要注意路径,
WindowsApplication1.Images.MyPanel.bmp
表示,解决方案是WindowsApplication1
,目录是Images
,文件名是MyPanel.bmp
,同时,这个图片必须是“嵌入的资源”(点击文件,右键,属性,有一个文件属性,其中,在生成操作中,可以选择"嵌入的资源"
)DesignerSerializationVisibility
表示,是否在*.Designer.cs文件中将设置的代码写出来,也就是是否要实现序列化。默认为
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
表示需要实现序列化。
如果设置为hidden:-
[
-
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时很重要的,如果使用的好,将会对用户的使用带来很大的便利。