場景:類似QQ聊天的窗體中,需要添加自定義滾動條vScroll。主窗體中panel存放空間,右邊有垂直的滾動條vScroll。
問題:已經實現vScroll和Panel.VerticalScroll滾動條聯動,鼠標可拖動,但是鼠標滑輪事件不能觸發。
原因:Panel不能聚焦,鼠標點擊后不能觸發wheel事件。
解決方法:點擊Panel后vScroll獲得焦點,然后自定義鼠標Wheel事件。
代碼:
//鼠標滑輪事件 protected override void OnMouseWheel(MouseEventArgs e) { base.OnMouseWheel(e); if(e.Delta < 0) { vScrollBar.Value += vScrollBar.LargeChange; } else { vScrollBar.Value -= vScrollBar.LargeChange; } mPanel.VerticalScroll.value = vScrollbar.Value; } //點擊panel后vscroll獲得焦點 private void Panel_Click(object sender, EventArgs e) { vScrollBar.focus(); }