c# 创建自绘用户控件

一、继承UserControl类

public class Chart : UserControl

 

二、定义常量、私有成员变量、属性

  加入属性的修饰,可以在图形界面配置

  private const int LeftPos = 60;

  private int[] m_values = new int[3];

  [CategoryAttribute("Chart")]   [DescriptionAttribute("已解决的事务数量")]
  [DefaultValueAttribute(0)]   public int Resolved
  {   get {   return m_values[0];     } set {   //对输入值进行验证 if (value < 0) {   value = 0; } m_values[0] = value; //重绘控件 Invalidate();     }   }

 三、重写父类UserControl的几个事件处理

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    e.Graphics.Clear(Parent.BackColor);
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
    //如果控件大小能显示下所有数据
    if (Width > LeftPos && m_barHeight > 1)
    {
        //绘制左边的标签
        DrawLabels(e.Graphics);
        //绘制图表
        DrawChart(e.Graphics);
    }
    // 总是绘制文本信息
    DrawMessage(e.Graphics);
}

protected override void OnSizeChanged(EventArgs e)
{
    // 调用CalculateBounds函数重新计算布局
    CalculateBounds();
    
    //调用基类处理函数
    base.OnSizeChanged(e);
}

// 计算布局及布局内元素的各种参数数值
private void CalculateBounds()
{ 
}

protected override void OnFontChanged(EventArgs e)
{
    base.OnFontChanged(e);
    CalculateBounds();
}

protected override void OnTextChanged(EventArgs e)
{
    base.OnTextChanged(e);
    CalculateBounds();
    // 立刻重绘
    Invalidate();
}

 

转载于:https://www.cnblogs.com/nw0220/p/11609152.html

你可能感兴趣的:(c# 创建自绘用户控件)