當前位置:編程學習大全網 - 源碼下載 - C# 對Panel設置Mouseclick事件 4RadioButton觸發跳出Messagebox

C# 對Panel設置Mouseclick事件 4RadioButton觸發跳出Messagebox

如果將窗體或容器控件(如Plael控件)的AutoScroll屬性設置為True時,那麽當窗體或Panel容不下其中的子控件時就會出現滾動條,通過移動滾動條可以上下顯示出窗體或Panel中的全部內容。但是默認情況下滾動條的移動只能通過鼠標直接拖動滾動條來實現,而不能通過鼠標的滾輪來實現上下移動,因此需要手動添加代碼來實現這個功能。滾動鼠標的滾輪,觸發的是窗體或控件上的 MouseWheel 事件。但是在VS.net2005中,窗體和控件的事件列表中卻不包含 MouseWheel 事件,因此關於這個事件的全部代碼必須手動輸入。這裏以添加壹個Panel的 MouseWheel 事件為例。首先在窗體的構造函數或InitializeComponent函數中,添加對MouseWheel 事件的訂閱: this.Panel.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.Panel_MouseWheel);

這樣只是使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。

  • 上一篇:cuda編程問題 運行出錯
  • 下一篇:大智慧公式:分時盤中股價完全在均價上的選股公式
  • copyright 2024編程學習大全網