2012-11-15 38 views
2

我有一個WinForm應用程序,它在面板中有一個面板和兩個按鈕。我在我的面板上添加了一個mousemove事件,當我將鼠標移動到面板中時,mousemove函數被調用,就像預期的一樣。從父控件接收MouseMove事件

的問題是,如果我按下我的鼠標按鈕,同時在按鈕,按鈕按下,如果我移動鼠標到面板,同時仍按住按鈕,面板鼠標移動功能不會被調用,直到我釋放鼠標按鈕。

有沒有解決這個問題的方法?如果我不清楚,我可以嘗試更清楚。

+0

你的意思是,即使用戶按下鼠標,並持有該按鈕,面板應該移動? –

+0

我不想移動任何東西。我只是想讓面板的MouseMove事件觸發。由於我在面板內移動鼠標,預期的行爲應該是MouseMove事件應該觸發 – Icemanind

+0

將面板的'MouseMove'事件賦予按鈕的'MouseDown'事件? –

回答

1

所以看起來,雖然按鈕被按下,鼠標移回底層面板,面板的MouseMove事件不會被觸發。

您可以通過鉤住按鈕的MouseMove捕獲指針位置。但指針的位置將相對於按鈕,而不是面板,所以你需要這些座標添加到該按鈕的位置座標:

Point mousePoint; 

private void panel1_MouseMove(object sender, MouseEventArgs e) 
{ 
    mousePoint = e.Location; 
} 

private void button1_MouseMove(object sender, MouseEventArgs e) 
{ 
    mousePoint = new Point(button1.Location.X + e.Location.X, button1.Location.Y + e.Location.Y); 
} 
+0

我會嘗試你的建議。這似乎很奇怪,但面板不能簡單地觸發鼠標移動事件 – Icemanind

+0

酷 - 讓我知道它是怎麼回事。 – davenewza