C#自定义控件
序言
用了onpaint事件重绘
与绘制有关的函数
Paint()
OnPaint()
Invalidate()
前两个函数的执行顺序,如果在OnPaint()中有base.OnPaint(e)函数,就相当于执行外部的Paint()函数。
Invalidate()运行后,会通知系统要重绘控件,但是不是立即重绘,而是运行完所有程序之后再重绘。

protected override void OnPaint(PaintEventArgs e)//重写OnPaint方法 { base.OnPaint(e);//先执行基类的OnPaint方法 Graphics g = e.Graphics; Pen p = new Pen(Color.Red); g.DrawEllipse(p, 40, 40, 100, 100); g.Dispose(); p.Dispose(); }
一个控件应该什么时候绘制主要有两个 :
一个是 系统来确定 这个控件需要绘制 比如 最小化后在最大化 那么此时 系统会发出WM_PAINT 消息来告知控件 你需要重绘了
另一个就是 人为的调用this.Invalidate()或者this.Invalidate(Rectangle)来自己触发一次重绘
自己开发的WinForm控件通常有三种类型:复合控件(Composite Controls),扩展控件(Extended Controls),自定义控件(Custom Controls)。
复合控件:将现有的各种控件组合起来,形成一个新的控件,将集中控件的功能集中起来。
扩展控件:在现有控件的控件的基础上派生出一个新的控件,为原有控件增加新的功能或者修改原有控件的控能。
自定义控件:直接从System.Windows.Forms.Control类派生出来。Control类提供控件所需要的所有基本功能,包括键盘和鼠标的事件处理。自定义控件是最灵活最强大的方法,但是对开发者的要求也比较高,你必须为Control类的OnPaint事件写代码,你也可以重写Control类的WndProc方法,处理更底层的Windows消息,所以你应该了解GDI+和Windows API。
本系列文章主要介绍自定义控件的开发方法。
控件(可视化的)的基本特征:
1. 可视化。
2. 可以与用户进行交互,比如通过键盘和鼠标。
3. 暴露出一组属性和方法供开发人员使用。
4. 暴露出一组事件供开发人员使用。
5. 控件属性的可持久化。
6. 可发布和可重用。
资料
https://www.cnblogs.com/tianma3798/p/3960663.html
https://www.cnblogs.com/feiyangqingyun/category/273570.html
https://www.cnblogs.com/peterzb/archive/2009/06/18/1505438.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-03-15 JDK1.8 红黑树
2016-03-15 Jquery在项目中的总结