我在C#中運行應用程序,我需要爲滾動條添加鼠標滾輪功能。如何使MouseWheel在滾動條上工作
我設置了Focus()
從我需要滾動的窗口的一些控件。而且,它仍然不起作用。但是,如果將應用程序最小化並再次最大化,並且在沒有任何其他點擊的情況下進行滾動,它就能工作
如果我點擊任何其他控件,我不能在滾動條上使用鼠標滾輪功能。另外,我把Refresh()
放在一些控件上。
什麼是問題,解決方案是什麼?
我在C#中運行應用程序,我需要爲滾動條添加鼠標滾輪功能。如何使MouseWheel在滾動條上工作
我設置了Focus()
從我需要滾動的窗口的一些控件。而且,它仍然不起作用。但是,如果將應用程序最小化並再次最大化,並且在沒有任何其他點擊的情況下進行滾動,它就能工作
如果我點擊任何其他控件,我不能在滾動條上使用鼠標滾輪功能。另外,我把Refresh()
放在一些控件上。
什麼是問題,解決方案是什麼?
添加MouseHover事件處理程序,並聚焦()滾動條:
this.panel1.MouseHover += new System.EventHandler(panel1_MouseHover);
private void panel1_MouseHover (object sender, EventArgs e)
{
this.vScrollBar1.Focus();
}
它將創建滾動的問題,這不是滾動位置被重置,而是父容器本身滾動到用戶控件的左上角。
爲避免這種情況,您必須重寫ScrollToControl
方法。擴展System.Windows.Forms.Panel
並覆蓋那裏的ScrollToControl
方法。
示例代碼:
class CustomScrollBarPanel : System.Windows.Forms.Panel
{
protected override Point ScrollToControl(Control activeControl)
{
return this.AutoScrollPosition;
}
}
然後使用它。
你能指定:這是WPF還是WinForms? – Joe
可能重複的[如何重定向在VB.Net?中的滾輪](http://stackoverflow.com/questions/2559999/how-to-retarget-the-scroll-wheel-in-vb-net) –
@ Joe我使用WinForms – LauraV