這樣只是使Panel能接收鼠標的滾動事件,但還不能實現滾動條的上下移動,因此還需要添加以下代碼: private void Panel_MouseWheel(object sender, MouseEventArgs e)
{
Panel.VerticalScroll.Value += 10;
Panel.Refresh();
Panel.Invalidate();
Panel.Update();
}
如果添加了以上代碼,就認為萬事大吉了,那就大錯特錯了。運行以上的程序,可以發現,Panel控件並不能對鼠標滾輪事件做出反應,原因是Panel控件默認不能獲得焦點,因此它就不能捕獲鼠標,也就不能捕獲鼠標的滾輪事件。解決方法是讓Panel控件先獲得焦點,可以通過Panel的MouseClick事件或MouseEnter事件來執行this.Panel.Focus()以達到目的。這樣當鼠標點擊了Panel控件或移動到Panel控件上時它就獲得了焦點。因此還需要添加以下代碼: view source print? 1private void Panel_MouseClick(object sender, MouseEventArgs e) 2{ 3this.Panel.Focus(); 4}
這樣再執行程序,就可以達到通過鼠標滾動來移動滾動條的目的了。除此之外還要說的壹點是,觸發鼠標的滾動事件後,處理事件的函數參數 MouseEventArgs e 中有個Delta屬性,默認情況下向上滾動e.Delta=120,向下滾動e.Delta=-120。