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