参考链接:https://blog.csdn.net/blademainer/article/details/8560605
当前示例是使用自定义控件,继承UserControl
鼠标进入控件区域改变背景颜色,离开控件区域更改回来
public partial class MyButton : UserControl
{
private Color saveColor = Color.WhiteSmoke;
public MyButton()
{
InitializeComponent();
}
/// <summary>
/// 重写OnControlAdded方法,为每个子控件添加MouseEnter和MouseLeave事件
/// </summary>
/// <param name="e"></param>
protected override void OnControlAdded(ControlEventArgs e)
{
Control control = e.Control; // 获取添加的子控件
control.MouseEnter += this.MyButton_MouseEnter;//为子控件注册鼠标进入控件事件
control.MouseLeave += this.MyButton_MouseLeave;//为子控件注册鼠标离开控件事件
base.OnControlAdded(e);
}
/// <summary>
/// 鼠标进入控件可视部分
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyButton_MouseEnter(object sender, EventArgs e)
{
this.BackColor = Color.FromArgb(204, 232, 207);
}
/// <summary>
/// 鼠标离开控件可视部分
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MyButton_MouseLeave(object sender, EventArgs e)
{
//鼠标离开当前工作区域(控件区域)?
if (!this.RectangleToScreen(this.ClientRectangle).Contains(Control.MousePosition))
{
this.BackColor = Color.WhiteSmoke;
}
}
}