2010-12-23 88 views
3

這可能是一個n00b查詢。我需要在哪裏根據鼠標停止事件更改軌跡欄值。我做到這一點如下:如何移動TrackBar以響應C#中的鼠標事件?

private void MoveTrackBarToMouseClickLocation(TrackBar a_tBar, int a_mouseX) 
{ 
    // Jump to the clicked location 

     double dblValue; 
     dblValue = ((double)a_mouseX/(double)a_tBar.Width) * (a_tBar.Maximum - a_tBar.Minimum); 
     a_tBar.Value = Convert.ToInt32(dblValue); 
} 

這部分工作正常。我在按住鼠標按鈕時無法使滾動工作。例如如果我點擊軌跡欄,並且需要用鼠標向下說50,我希望能夠在鼠標關閉時向右或向左滾動(從值= 50)。

我希望我已經明確了我的小問題。 任何幫助表示讚賞。 謝謝

回答

2

您需要在MouseMove event以及MouseDown事件中執行您的代碼。

當鼠標移動時發生此事件其中一個按鈕被按下。相比之下,您當前處理的MouseDown事件只會在每次按下鼠標按鈕時提升一次。這就是爲什麼當用戶移動鼠標時TrackBar沒有移動,但在第一次按下按鈕時正常工作。

您沒有在代碼中顯示連接事件處理程序和/或調用MoveTrackBarToMouseClickLocation函數的代碼,因此具體如我所知。但是如果您已經設置了MouseDown事件,那麼這應該是一個簡單的修復。

+0

是的,我已經掛鉤了鼠標按下事件,MoveTrackBartoMouseClickedLocation()在鼠標按下事件處理程序中被調用... – ababeel 2010-12-23 23:14:34