如何修复事件延迟

我正在为学校项目制作一个表预订系统,我正在使用PictureBoxes列表来表示这些表。 对于这些PictureBox我已经链接了一个hover事件,当我hoverBackColor属性时,我发生了变化。

List pb = new List { 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; } 

一切都很好,除了当我将鼠标hover在触发事件之前需要1秒时,是否有任何方法可以立即触发事件?

如果要立即触发事件,请改用MouseEnter事件。 通过设计,鼠标应保持静止一段时间,以便MouseHover事件。

BTW SystemInformation.MouseHoverTime保持MouseHover事件的延迟。

一切都很好,除了当鼠标hover时,它需要1秒才能触发事件

这就是Control.MouseHover的定义方式:

鼠标指针停留在控件上时发生。

“rest”部分是一秒钟的延迟。 我不知道有任何方法可以调整鼠标在计算为hover之前必须停留的时间长度。

如果您不想要任何延迟 – 即您希望在鼠标进入控件区域时立即引发事件 – 您应该使用Control.MouseEnter

从两个事件的文档:

鼠标事件按以下顺序发生:

  • 的MouseEnter

  • 的MouseMove

  • MouseHover / MouseDown / MouseWheel

  • 的MouseUp

  • 鼠标离开