2009-12-10 59 views

回答

85

使用MouseWheel事件的組合框:

void comboBox1_MouseWheel(object sender, MouseEventArgs e) { 
    ((HandledMouseEventArgs)e).Handled = true; 
} 

注意:你必須在代碼中創建事件:

comboBox1.MouseWheel += new MouseEventHandler(comboBox1_MouseWheel); 
+14

完美地工作,謝謝!旁註:如果您希望滾動仍然適用於組合框被刪除時,只需添加行:「組合框控件=(組合框)發件人;」和「if(!control.DroppedDown)」之前的「((HandledMouseEventArgs)e).Handled = true」行。 – Heliac 2012-07-09 10:50:25

+3

這目前不適用於單聲道。 https://bugzilla.xamarin.com/show_bug.cgi?id=25201 – chrish 2014-12-09 20:50:42

+3

我知道這是舊的,但我喜歡這個版本在'InitializeComponent();'後面的窗體構造函數:'comboBox1.MouseWheel + = (o,e)=>((HandledMouseEventArgs)e).Handled = true;' – 2015-12-04 20:18:49

0

我用另一種解決方案也適用於Mono。

目標是防止意外滾動(即當用戶在使用鼠標滾輪時未查看組合框)。如果他/她在組合框的可見部分之外滾動,則組合框不應滾動,否則應該。

我的解決辦法:

  • 放置屏幕的可見部分之外的只讀文本框。在form_load中,我放置了一行:hiddenTextbox.left = -100;

  • 當鼠標離開組合框使用鼠標離開事件時,將焦點設置到此文本框中。在comboBox1_MouseLeave中,我放置了一行:hiddenTextbox.focus();

  • 處理mouseWheel事件:From1.MouseWheel + = Form1_MouseWheel; textBoxHidden.MouseWheel + = Form1_MouseWheel;

相關問題