winform 控件开发

避免出现闪烁

1.控件的使用尽量以纯色为主,尽量不使用背景图,或者把大图改成小图,或者图片不缩放绘制,或者直接用不透明的纯色背景色(Winform控件透明是伪透明,是通过截取父容器背景来实现的,所以效率比较低,而且有时候会有延迟。而且多个透明控件叠加的时候不能分层显示出各个控件的透明效果)

2.自定义控件中使用双缓冲。

3.窗体边框最好不要设置为None,保留窗体最大化最小化动画,可以避免最小化恢复时候的界面闪烁。可能会有人说我的窗体是自定义美化的,边框为None了。其实可以通过拦截消息重绘非客户区,实现边框不为None的时候重绘整个窗体的。

自定义控件开发:

1、控件重绘的时候尽可能的处理 e.ClipRectangle,减少不必要的绘图操作;

2、标准重绘都应该在 Paint事件里处理,用事件里的 e.Graphics。而不是在随便个地方就用 CreateGraphics()来绘制

3、需要刷新的时候调用 Invalidate() 如果能计算重绘区域最好

减少闪烁:使用双缓冲,在构造函数里加入这两行代码

SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);

DoubleBuffered = true;

项目属性里,生成,选择 XML文档文件,生成///

到时候把dll给别人用的时候也把Xml带上,放到和dll同一个目录,这样别人开发的时候就有注释提示了

多线程调用:

多线程操作控件请使用控件的Invoke或者BeginInvoke调用 ,使用线程的时候记得设置线程的 IsBackground=true;程序关闭之后,线程能自动退出

透明度:

颜色 System.Drawing.Color 这个结构体 是可以支持设置透明度的。可以3个或者4个值,Color.FromArgb(),4个值的时候是 Alpha,Red,Green,Blue. 第一个就是透明度的参数 0-255

Design属性:

ToolboxItem
有时候是控件的Designer部分没有写好,不想别人一引用DLL就出现控件 可以设置:

这样用户控件就自动隐藏了,不出现在工具箱中。

ToolboxBitmap
让用户控件在工具箱中显示不同的图标:

这样用户控件使用的图标是Panel的图标。
如果不用系统的图标,而使用自己的图标,可以这样

不过,一定要注意路径,WindowsApplication1.Images.MyOKL.bmp表示,解决方案是WindowsApplication1,目录是Images,文件名是MyOKL.bmp,同时,这个图片必须是”Resources嵌入的资源

Category与Description

经常一起的属性,Category表示类型,如属性框中所显示的外观,布局等分类,当然,你可以自己的”自定义属性”,而Description就是这个属性的描述,用来说明属性有什么用途。这两个的设置相对都比较简单,可以说,一看就知道,不过提一下,Appearance是将出现在属性面板中,外观一栏。

DefaultValue

用于设置默认的值,对于string,bool,int,可以直接写出来:

这是可以的,不过,不是这三种类型的话,就比较麻烦,一定要先转化为string才能设置成功。如上面的DarkGray,这是系统定义的颜色,这还是比较好处理的。不过,如果是一些自定义的颜色,如颜色是128,0,128,你应该将128转为16进制,写成0x800080,前缀0x是一定要加的。最后就这样

Browsable
表示是否在属性面板中显示这个属性

表示,将在属性面板中显示这个属性。

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

自动判断 中文 中文(简体) 中文(香港) 中文(繁体) 英语 日语 朝鲜语 德语 法语 俄语 泰语 南非语 阿拉伯语 阿塞拜疆语 比利时语 保加利亚语 加泰隆语 捷克语 威尔士语 丹麦语 第维埃语 希腊语 世界语 西班牙语 爱沙尼亚语 巴士克语 法斯语 芬兰语 法罗语 加里西亚语 古吉拉特语 希伯来语 印地语 克罗地亚语 匈牙利语 亚美尼亚语 印度尼西亚语 冰岛语 意大利语 格鲁吉亚语 哈萨克语 卡纳拉语 孔卡尼语 吉尔吉斯语 立陶宛语 拉脱维亚语 毛利语 马其顿语 蒙古语 马拉地语 马来语 马耳他语 挪威语(伯克梅尔) 荷兰语 北梭托语 旁遮普语 波兰语 葡萄牙语 克丘亚语 罗马尼亚语 梵文 北萨摩斯语 斯洛伐克语 斯洛文尼亚语 阿尔巴尼亚语 瑞典语 斯瓦希里语 叙利亚语 泰米尔语 泰卢固语 塔加路语 茨瓦纳语 土耳其语 宗加语 鞑靼语 乌克兰语 乌都语 乌兹别克语 越南语 班图语 祖鲁语 自动选择 中文 中文(简体) 中文(香港) 中文(繁体) 英语 日语 朝鲜语 德语 法语 俄语 泰语 南非语 阿拉伯语 阿塞拜疆语 比利时语 保加利亚语 加泰隆语 捷克语 威尔士语 丹麦语 第维埃语 希腊语 世界语 西班牙语 爱沙尼亚语 巴士克语 法斯语 芬兰语 法罗语 加里西亚语 古吉拉特语 希伯来语 印地语 克罗地亚语 匈牙利语 亚美尼亚语 印度尼西亚语 冰岛语 意大利语 格鲁吉亚语 哈萨克语 卡纳拉语 孔卡尼语 吉尔吉斯语 立陶宛语 拉脱维亚语 毛利语 马其顿语 蒙古语 马拉地语 马来语 马耳他语 挪威语(伯克梅尔) 荷兰语 北梭托语 旁遮普语 波兰语 葡萄牙语 克丘亚语 罗马尼亚语 梵文 北萨摩斯语 斯洛伐克语 斯洛文尼亚语 阿尔巴尼亚语 瑞典语 斯瓦希里语 叙利亚语 泰米尔语 泰卢固语 塔加路语 茨瓦纳语 土耳其语 宗加语 鞑靼语 乌克兰语 乌都语 乌兹别克语 越南语 班图语 祖鲁语 有道翻译 百度翻译 谷歌翻译 谷歌翻译(国内) 翻译 朗读 复制 正在查询,请稍候…… 重试 朗读 复制 复制 朗读 复制 via 译

Original: https://www.cnblogs.com/zeroone/p/12432833.html
Author: 武胜-阿伟
Title: winform 控件开发

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/554416/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • linux free命令available小于free值

    问题:前段时间在做服务器巡检时发现系统可用内存值小于空闲内存值 分析:查询网上各种资料,都说的是 available=free + buff/cache 这样一个大致计算方式,按这…

    技术杂谈 2023年7月11日
    073
  • WaterfallTree(瀑布树) 详细技术分析系列

    前言 WaterfallTree(瀑布树) 是最强纯C#开源NoSQL和虚拟文件系统-STSdb专有的(版权所有/专利)算法/存储结构。 参考 关于STSdb,我之前写过几篇文章,…

    技术杂谈 2023年5月31日
    094
  • java学习之动态代理

    在后面的漏洞研究的学习中,必须要会的几个知识点。反射机制和动态代理机制。至于反射的前面已经讲到过了,这里就不做更多的赘述了。反射是通过class文件去获取对象对象的方法. &amp…

    技术杂谈 2023年6月21日
    075
  • 使用CRD扩展Kubernetes API

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    技术杂谈 2023年7月25日
    065
  • 基础篇——PycharmProfessional(专业版)免费激活

    背景故事 Pycharm是一个Python编程首推的软件,但只有community(社区版)是免费的,很多高级功能,比如远程调试这些都需要Professional(专业版)才有,在…

    技术杂谈 2023年7月23日
    0124
  • iOS 字符串 去除空格

    NSString *str = @” this is a test . “; 去掉两端的空格 str = [str stringByTrimmingCharactersInSet:…

    技术杂谈 2023年5月30日
    075
  • bitbucket安装

    1,安装文件下载 官网bin文件下载地址:https://www.atlassian.com/software/stash/downloads/binary/atlassian-b…

    技术杂谈 2023年6月1日
    068
  • 问题开发

    1.路由协议 2.snmpv2 v3 发展异同 ?原因 解决什么问题 Original: https://www.cnblogs.com/hshy/p/16539009.htmlA…

    技术杂谈 2023年5月31日
    0119
  • Log4j 日志框架

    Log4j(Log for java)是 Apache 的一个开源项目,通过使用 Log4j,可以控制日志信息输送的目的地是控制台或文件等,也可以控制每一条日志的输出格式。通过定义…

    技术杂谈 2023年7月11日
    073
  • 奇安信服务端一二面面经(来源牛客)

    一.一面 应用层——HTTP: ​ 当输入URL后,对URL进行解析。​ URL解析方式如下:​ https://www.baidu.com/​ https:代表访问数组的协议(h…

    技术杂谈 2023年7月11日
    080
  • 8086汇编 cmp 指令

    8086汇编 cmp 指令 cmp 是比较指令,功能相当于减法指令,只是不保存结果。cmp 指令执行后,将对标志寄存器产生影响。 格式:cmp 操作对象1,操作对象2功能:计算操作…

    技术杂谈 2023年6月1日
    079
  • LeetCode2.两数相加

    给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新…

    技术杂谈 2023年7月24日
    056
  • 图解|从根上彻底理解MySQL的索引

    这是图解MySQL的第4篇文章,这篇文章会让你 明白什么是索引,彻底理解B+树和索引的关系; 彻底理解主键索引、普通索引、联合索引; 了解什么是HASH索引,InnoDB和MyIS…

    技术杂谈 2023年7月23日
    088
  • 可穿戴产品常用的几款主流的健康传感器盘点

    一 简析 1.简介 健康传感器包括心率传感器,血氧传感器等,该类型传感器在应用十分广泛。梳理,测试和运用这些传感器。为后续的产品做铺垫。 二 产品解析 1.汇顶科技GH30XX系列…

    技术杂谈 2023年5月31日
    094
  • C# DataGridView控件 修改一行或单元格的颜色

    1.winform datagridview更改选中行中选中单元格的背景或字体颜色 2.winfrom——DataGridView 选中某一行的事件 先将SelectionMode…

    技术杂谈 2023年5月31日
    087
  • Metalama简介4.使用Fabric操作项目或命名空间

    使用基于Roslyn的编译时AOP框架来解决.NET项目的代码复用问题Metalama简介1. 不止是一个.NET跨平台的编译时AOP框架Metalama简介2.利用Aspect在…

    技术杂谈 2023年5月31日
    0108
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球