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:- [DesignerSerializationVisibility(DesignerSerializationVisibility.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时很重要的,如果使用的好,将会对用户的使用带来很大的便利。
C# 自定义控件一些特性标识,重写WinForm 控件,重写控件的更多相关文章
- Winform控件重写
Winform控件重写 因为最近的项目中越来越多的遇到了比较特殊的一些控件,有时候我们自己封装一下可能更加方便我们的使用,下面是我们项目中用到的,简单做一个记录. TextBox控件重写 主要的控制代 ...
- Android 自定义View 三板斧之三——重写View来实现全新控件
通常情况下,Android实现自定义控件无非三种方式. Ⅰ.继承现有控件,对其控件的功能进行拓展. Ⅱ.将现有控件进行组合,实现功能更加强大控件. Ⅲ.重写View实现全新的控件 本文来讨论最难的一种 ...
- C# WinForm自定义通用分页控件
大家好,前几天因工作需要要开发一个基于WinForm的小程序.其中要用到分页,最开始的想法找个第三方的dll用一下,但是后来想了想觉得不如自己写一个玩一下 之前的web开发中有各式各样的列表组件基本都 ...
- 玩转控件:重写/重绘Dev中MessageBox弹窗控件
很久没有更新博客了,本想着直接发一篇<手撕ERP>系列,从控件重写.重绘,到框架搭建,再到部分模块实现+业务的.但是每次动手的时候,都觉得难以下手.直接从数据库设计开始吧,模块设计还没定下 ...
- winform用户控件、动态创建添加控件、timer控件、控件联动
用户控件: 相当于自定义的一个panel 里面可以放各种其他控件,并可以在后台一下调用整个此自定义控件. 使用方法:在项目上右键.添加.用户控件,之后用户控件的编辑与普通容器控件类似.如果要在后台往窗 ...
- 富客户端 wpf, Winform 多线程更新UI控件
前言 在富客户端的app中,如果在主线程中运行一些长时间的任务,那么应用程序的UI就不能正常相应.因为主线程要负责消息循环,相应鼠标等事件还有展现UI. 因此我们可以开启一个线程来格外处理需要长时间的 ...
- [转] WinForm实现移除控件某个事件的方法
原文 WinForm实现移除控件某个事件的方法 本文实例讲述了WinForm实现移除控件某个事件的方法,供大家参考借鉴一下.具体功能代码如下: 主要功能部分代码如下: /// <summary& ...
- Winform中修改WebBrowser控件User-Agent的方法(已经测试成功)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- WPF中嵌入WinForm中的webbrowser控件
原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...
- C# winform项目中ListView控件使用CheckBoxes属性实现单选功能
C# winform项目中ListView控件使用CheckBoxes属性实现单选功能 在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes ...
随机推荐
- 一些 NuGet 包
Some RestSharp Simple REST and HTTP API Client Newtonsoft.Json Json.NET is a popular high-performanc ...
- unity里生成的.csproj和.sln :assembly definition以及ET框架中的程序集定义
有一段时间一直没明白为啥有的时候第三方的package里的代码没法引用我们项目的,最近有点心得,记录下: 在创建unity项目的时候默认是创建一个解决方案就是以.sln为结尾的.默认开发时都在同一个解 ...
- python处理ppt文件,转换成图片或者pdf文件(获取目录下所有文件信息、文件名称分割、文档操作)
把PPT每一页截图到公众号里推送可是个体力活,那就用python脚本去分解ppt,保存每一个为一张图片好了 需要用到"win32com.client"库 import win32c ...
- (转)python批量提取PDF第一页输出为图片
一:步骤 1.使用input输入路径 2.生成图片存户路径同存放路径 3.生成图片为PNG格式 4.支持自定义截取页数,建议为第一页 二:安装扩展类 pip install PyMuPDF 三:示例代 ...
- Go 切片的扩容规则是怎么样的
切片是动态数组,容量是根据元素动态增加的. 本来想看看源码怎么写的,发现切片追加元素的方法是内置的,看起来还挺麻烦 源码位于 builtin.go 中: // The append built-in ...
- 在SqlSugar的开发框架中增加对低代码EAV模型(实体-属性-值)的WebAPI实现支持
我在前面随笔中介绍了在SqlSugar的开发框架中实现EAV模型(实体-属性-值)的处理,这个EAV模型实现的目的是支持弹性化的数据库设计,可以自由扩展数据库表字段和数据的查询和存储,实现的思路是在常 ...
- wpf 控件绑定鼠标命令、键盘命令
1 <Window x:Class="CommandDemo.MainWindow" 2 xmlns="http://schemas.microsoft.com/w ...
- GC垃圾收集时,居然还有用户线程在奔跑
之前面试被问到过"当GC垃圾收集时,是所有的用户线程都停止了吗?",这一篇我们来探究一下这个问题. 其实执行本地代码的线程仍然可以运行,那么这些线程一旦改变了对象中的引用关系或创建 ...
- GSLibrary平台本地搭建(windows)
一.安装配置数据库 https://dev.mysql.com/downloads/windows/installer/5.7.html 创建GSLibrary数据库 mysql -uroot -p ...
- kali 2020使用SSH进行远程登录
修改sshd_config文件,命令为: vi /etc/ssh/sshd_config 将#PasswordAuthentication no的注释去掉,并且将NO修改为YES //kali中默认是 ...