2012-11-25 46 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

  • 鼠標離開