zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    WPF 动态更改启动窗体startupUri
    WPS中DataGrid无故多一行空白行
    wpf 查找Control Template内部控件
    WPF DataGridTemplateColumn添加按钮
    WPF中使用DataGrid时操作列按钮问题
    c#前台线程与后台线程的区别和联系
    WPF中进度条
    Dispatcher.Invoke方法
    WSS、SSL 和 https 之间的关系
    WPF 设置程序不允许多开
  • 原文地址:https://www.cnblogs.com/cnki/p/12500509.html
Copyright © 2011-2022 走看看