Winform 鼠标进入控件更改背景色,离开则恢复原色。但鼠标移动太快,有时不能恢复原背景色问题

如下图:原背景色白色,hover时变灰色,但鼠标移动太快导致部分没能恢复为白色
img

        private void Item_MouseEnter(object sender, EventArgs e)
        {
            this.BackColor = Color.FromArgb(248, 248, 248);
        }

        private void Item_MouseLeave(object sender, EventArgs e)
        {
          //避免鼠标在子控件上时遮挡而触发鼠标离开控件的情况
            if (!this.RectangleToScreen(this.ClientRectangle).Contains(MousePosition))
            {
                this.BackColor = Color.White;
            }
        }

数据了不多的话,在Item_MouseEnter里遍历一遍item,设置背景白色。
或者定义个item的全局变量,Item_MouseLeave里给item赋值,Item_MouseEnter里设置背景白色。

            //避免子控件遮挡而无法触发父控件鼠标事件
            foreach (Control ctrl in Item.Controls)
            {
                ctrl.MouseEnter += new EventHandler((sender, e) => {
                    base.OnMouseEnter(e);
                });
                ctrl.MouseLeave += new EventHandler((sender, e) => {
                    base.OnMouseLeave(e);
                });
            }