2013-11-29 195 views
2

我有一個與MouseClick事件的窗體上的面板。問題在於,每次單擊面板時都不會觸發MouseClick事件。當它跳過點擊時它是非常隨機的。鼠標點擊面板跳過點擊

我想我可以使用的MouseDown和MouseUp事件代替,但我想知道這是爲什麼發生的事情......(我有同樣的問題,當我使用「點擊」事件)

我已經有一個很簡單的測試項目測試這我的項目之外,它還是老毛病:

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 

     var panel = new Panel 
     { 
      Location = new Point(10, 10), 
      Size = new Size(200, 200), 
      BackColor = Color.Red 
     }; 
     panel.MouseClick += panel_MouseClick; 
     //panel.Click += panel_Click; --Also skips clicks. 

     this.Controls.Add(panel); 
    } 

    void panel_MouseClick(object sender, MouseEventArgs e) 
    { 
     Console.WriteLine("Click"); 
    } 
} 

回答

3

Panel類ControlStyles.StandardDoubleClick開啓。因此,您很可能會生成MouseDoubleClick事件,因爲您沒有訂閱事件,所以您不會看到它們。

解決這個問題的方法不止一種,除了關閉樣式標誌並訂閱該事件外,MouseDown事件也是一個例子。關閉樣式需要使用調用SetStyle()的構造函數從Panel中派生自己的類。

+0

非常感謝!我已經選擇從Panel派生我的類,並在構造函數中調用SetStyle(ControlStyles.StandardDoubleClick,false) – VincentC