2012-11-25 128 views
1

即时制作一个学校项目的表预订系统,并即时使用一个pictureboxes列表来表示表。 这些pictureboxes我已经链接了一个悬停事件,当我悬停backColor属性被改变。如何解决事件延迟

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秒之前该事件是triggerd,有没有什么办法immidiately触发事件?

谢谢。

回答

2

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

BTWSystemInformation.MouseHoverTime认为延迟MouseHover事件。

1

一切都很正常,只是当我在哈佛的鼠标,它需要1秒触发事件之前

那怎么Control.MouseHover定义:

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

“休息”部分是延迟一秒。我不知道有什么方法可以在鼠标悬停之前调整鼠标悬停的时间长度。

如果您不希望有任何延迟 - 即您想要鼠标进入控件区域时立即引发的事件 - 则应该使用Control.MouseEnter代替。

从两个事件的文档:

鼠标事件发生在下列顺序:

  • 的MouseEnter

  • 的MouseMove

  • MouseHover /的MouseDown /鼠标滚轮

  • 的MouseUp

  • 鼠标离开