参考链接:https://blog.csdn.net/blademainer/article/details/8560605

    当前示例是使用自定义控件,继承UserControl
    鼠标进入控件区域改变背景颜色,离开控件区域更改回来

    1. public partial class MyButton : UserControl
    2. {
    3. private Color saveColor = Color.WhiteSmoke;
    4. public MyButton()
    5. {
    6. InitializeComponent();
    7. }
    8. /// <summary>
    9. /// 重写OnControlAdded方法,为每个子控件添加MouseEnter和MouseLeave事件
    10. /// </summary>
    11. /// <param name="e"></param>
    12. protected override void OnControlAdded(ControlEventArgs e)
    13. {
    14. Control control = e.Control; // 获取添加的子控件
    15. control.MouseEnter += this.MyButton_MouseEnter;//为子控件注册鼠标进入控件事件
    16. control.MouseLeave += this.MyButton_MouseLeave;//为子控件注册鼠标离开控件事件
    17. base.OnControlAdded(e);
    18. }
    19. /// <summary>
    20. /// 鼠标进入控件可视部分
    21. /// </summary>
    22. /// <param name="sender"></param>
    23. /// <param name="e"></param>
    24. private void MyButton_MouseEnter(object sender, EventArgs e)
    25. {
    26. this.BackColor = Color.FromArgb(204, 232, 207);
    27. }
    28. /// <summary>
    29. /// 鼠标离开控件可视部分
    30. /// </summary>
    31. /// <param name="sender"></param>
    32. /// <param name="e"></param>
    33. private void MyButton_MouseLeave(object sender, EventArgs e)
    34. {
    35. //鼠标离开当前工作区域(控件区域)?
    36. if (!this.RectangleToScreen(this.ClientRectangle).Contains(Control.MousePosition))
    37. {
    38. this.BackColor = Color.WhiteSmoke;
    39. }
    40. }
    41. }