2012-11-06 23 views
1

我在C#中運行應用程序,我需要爲滾動條添加鼠標滾輪功能。如何使MouseWheel在滾動條上工作

我設置了Focus()從我需要滾動的窗口的一些控件。而且,它仍然不起作用。但是,如果將應用程序最小化並再次最大化,並且在沒有任何其他點擊的情況下進行滾動,它就能工作

如果我點擊任何其他控件,我不能在滾動條上使用鼠標滾輪功能。另外,我把Refresh()放在一些控件上。

什麼是問題,解決方案是什麼?

+0

你能指定:這是WPF還是WinForms? – Joe

+0

可能重複的[如何重定向在VB.Net?中的滾輪](http://stackoverflow.com/questions/2559999/how-to-retarget-the-scroll-wheel-in-vb-net) –

+0

@ Joe我使用WinForms – LauraV

回答

0

添加MouseHover事件處理程序,並聚焦()滾動條:

this.panel1.MouseHover += new System.EventHandler(panel1_MouseHover); 

private void panel1_MouseHover (object sender, EventArgs e) 
{ 
    this.vScrollBar1.Focus(); 
} 
1

它將創建滾動的問題,這不是滾動位置被重置,而是父容器本身滾動到用戶控件的左上角。

爲避免這種情況,您必須重寫ScrollToControl方法。擴展System.Windows.Forms.Panel並覆蓋那裏的ScrollToControl方法。

示例代碼:

class CustomScrollBarPanel : System.Windows.Forms.Panel 
{ 
    protected override Point ScrollToControl(Control activeControl) 
    { 
     return this.AutoScrollPosition; 
    } 
} 

然後使用它。