如何修复事件延迟
我正在为学校项目制作一个表预订系统,我正在使用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
鼠标离开