我正在为一个学校项目制作一个桌子预订系统,我正在使用一个图片框列表来表示表格。对于这些图片框,我链接了一个悬停事件,当我悬停时,背景颜色属性发生了变化。
List<PictureBox> pb = new List<PictureBox> { pictureBox1, pictureBox2, pictureBox3};
foreach (PictureBox p in pb)
{
p.BorderStyle = BorderStyle.Fixed3D;
p.BackColor = Color.White;
p.MouseHover += new EventHandler(mouseOn);
}
private void mouseOn(object sender, EventArgs e)
{
((PictureBox)sender).BackColor = Color.Green;
}
一切都很好,除了当我将鼠标悬停在上面时,需要 1 秒才能触发事件,有什么方法可以立即触发事件吗?
立即触发事件,请改用MouseEnter
事件。根据设计,鼠标应保持静止一段时间MouseHover
以便触发事件。
顺便说一句,SystemInformation.MouseHoverTime
认为MouseHover
事件会延迟。
一切正常,除了当我将鼠标悬停时,触发事件需要 1 秒
这就是Control.MouseHover
的定义:
当鼠标指针停留在控件上时发生。
"休息"部分是一秒的延迟。我不知道有什么方法可以调整鼠标在计为悬停之前必须停止控件的时间长度。
如果您不想要任何延迟 - 即您希望在鼠标进入控件区域后立即引发的事件 - 您应该改用Control.MouseEnter
。
从这两个事件的文档中:
鼠标事件按以下顺序发生:
鼠标输入
鼠标移动
鼠标悬停/鼠标向下/鼠标滚轮
鼠标向上
鼠标离开