在自定义控件的过程中,可以优先考虑从现有的控件中进行派生,并添加所需要的功能。(制作效果,当鼠标指针移动到控件时,控件颜色就会发生改变,当鼠标离开时就恢复原来的颜色)
首先添加一个新的类。
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 } }
在解决方案资源管理器窗口中设置:引用---->添加引用,勾选
点击重新生成项目。找到