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