c# 自定义控件

 

  在自定义控件的过程中,可以优先考虑从现有的控件中进行派生,并添加所需要的功能。(制作效果,当鼠标指针移动到控件时,控件颜色就会发生改变,当鼠标离开时就恢复原来的颜色)

  首先添加一个新的类。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;


namespace Contol颜色
{
    //[DefaultProperty("HoverColor")]
    //[Designer(typeof(ColourControl))]
    public class ColourControl : Control
    {
        #region 
        //重写该属性以设置控件默认大小
        protected override System.Drawing.Size DefaultSize
        {
            get
            {
                return new Size(100, 100);
            }
        }
        //当鼠标指针移动到控件区域内时的颜色
        public Color HoverColor
        {
            get { return M_hoverColor; }
            set
            {
                M_hoverColor = value;
                Invalidate();//强制重新绘制
            }
        }
        #endregion

        #region
        //该变量标识鼠标指针是否已经进入控件的区域
        private bool isMouseEnter = false;
        //当鼠标进入控件区域后的背景颜色
        Color M_hoverColor;
        #endregion

        #region 方法
        protected override void OnMouseEnter(EventArgs e)
        {
            //标识鼠标指正已经进入区域
            isMouseEnter = true;
            //强制重新绘制
            Invalidate();
            base.OnMouseEnter(e);
        }
        protected override void OnMouseLeave(EventArgs e)
        {
            //标识鼠标指针是否已经离开控件
            isMouseEnter = false;
            //强制重新绘制
            Invalidate();
            base.OnMouseLeave(e);
        }
        protected override void OnPaint(PaintEventArgs e)
        {
            //用于填充控件背景区域的画刷
            SolidBrush brush = new SolidBrush(BackColor);
            if (isMouseEnter)
            {
                brush.Color = HoverColor;
            }
            e.Graphics.FillRectangle(brush, e.ClipRectangle);
            //释放画刷资源
            brush.Dispose();
        }
        #endregion
    }
}

   在解决方案资源管理器窗口中设置:引用---->添加引用,勾选

  点击重新生成项目。找到

 

posted @ 2017-11-12 22:30  Dipsyhu  阅读(9365)  评论(0编辑  收藏  举报