如下图:原背景色白色,hover时变灰色,但鼠标移动太快导致部分没能恢复为白色
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);
});
}