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();
        }
View Code

一个控件应该什么时候绘制主要有两个 :

一个是 系统来确定 这个控件需要绘制 比如 最小化后在最大化 那么此时 系统会发出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

原文地址:https://www.cnblogs.com/cnki/p/12500509.html