我需要在.NET Framework的標準事件中不存在的事件。例如,當鼠標左鍵向下時,鼠標移動。按下按鈕時移動鼠標會引發什麼事件?
我還需要改變一些行爲。例如,我有一些按鈕,我想在鼠標左鍵關閉的同時更改光標所在的每個背景圖像,但是當我點擊一個按鈕並按住鼠標左鍵時,當我移動鼠標時其他按鈕不會引發任何事件。
我該怎麼辦?我如何創建新的事件?我如何改變行爲?
任何幫助表示讚賞。
我需要在.NET Framework的標準事件中不存在的事件。例如,當鼠標左鍵向下時,鼠標移動。按下按鈕時移動鼠標會引發什麼事件?
我還需要改變一些行爲。例如,我有一些按鈕,我想在鼠標左鍵關閉的同時更改光標所在的每個背景圖像,但是當我點擊一個按鈕並按住鼠標左鍵時,當我移動鼠標時其他按鈕不會引發任何事件。
我該怎麼辦?我如何創建新的事件?我如何改變行爲?
任何幫助表示讚賞。
你的問題給出是,當MouseDown事件上的按鈕時,該按鈕「捕獲」鼠標,直到鬆開按鈕不鬆開,這意味着MouseMove事件不會被其他按鈕接收。
有一些代碼from here這可以幫助:
// Assuming all buttons subscribe to this event:
private void buttons_MouseMove (object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Control control = (Control) sender;
if (control.Capture)
{
control.Capture = false;
}
if (control.ClientRectangle.Contains (e.Location))
{
Control.BackgroundImage = ...;
}
}
}
MouseMove-Event有一個名爲'Button'的屬性,告訴你哪個按鈕被按下。因此,所有你需要做的就是這樣的事情:
void panel1_MouseMove(Object sender, System::Windows::Forms::MouseEventArgs e) {
if(e.Button = MouseButtons.Left){
//Do what you want when mouse_move with left button pressed
}
}
上面的代碼沒有經過測試,我沒有擡頭屬性的正確拼寫等,只要給它一點點嘗試在智能感知/ MSDN。
你可以找到在MSDN甚至更多的信息: http://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousemove%28v=vs.71%29.aspx
對於第二個問題,只是試圖找到一個合適的事件或改寫的WindowProc-事件功能那裏你可以聽WindowMessages並獲取你需要 - 更多的信息上http://msdn.microsoft.com/en-us/library/ms633573%28v=VS.85%29.aspx和http://www.pinvoke.net
這是WPF或Windows窗體? – 2011-01-28 10:27:50
我編輯這個修復你的英文錯誤。 (我希望這不會冒犯你 - 我只是想幫助:))。一旦主持人批准,編輯應該可見。 – 2011-01-28 10:53:38