2009-12-10 9 views

Trả lời

85

Sử dụng sự kiện MouseWheel cho ComboBox của bạn:

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

Lưu ý: bạn sẽ phải tạo sự kiện trong mã:

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

Hoạt động hoàn hảo, cảm ơn! Sidenote: nếu bạn muốn di chuyển để vẫn áp dụng khi ComboBox được thả xuống, chỉ cần thêm các dòng: "ComboBox control = (ComboBox) người gửi;" và "if (! control.DroppedDown)" trước dòng "((HandledMouseEventArgs) e) .Handled = true". – Heliac

+3

Điều này hiện không hoạt động với Mono. https://bugzilla.xamarin.com/show_bug.cgi?id=25201 – chrish

+3

Tôi biết điều này là cũ, nhưng tôi thích phiên bản này ngay sau 'InitializeComponent();' trong hàm tạo biểu mẫu: 'comboBox1.MouseWheel + = (o, e) => ((HandledMouseEventArgs) e) .Handled = true; ' –

0

tôi sử dụng khác giải pháp cũng hoạt động trên Mono.

Mục tiêu là để ngăn việc cuộn vô tình (nghĩa là khi người dùng không nhìn vào comboBox khi sử dụng bánh xe chuột). Nếu anh ta/cô ta di chuyển ra ngoài phần có thể nhìn thấy của comboBox, hộp kết hợp sẽ không cuộn, nếu không nó sẽ như thế.

Giải pháp của tôi:

  • Đặt một chỉ đọc hộp văn bản bên ngoài phần hữu hình của màn hình. Trong form_load tôi đặt dòng: hiddenTextbox.left = -100;

  • Đặt tiêu điểm vào hộp văn bản này khi chuột rời khỏi hộp tổ hợp bằng sự kiện rời chuột. Trong comboBox1_MouseLeave tôi đã đặt dòng: hiddenTextbox.focus();

  • Xử lý chuộtThời gian sự kiện: From1.MouseWheel + = Form1_MouseWheel; textBoxHidden.MouseWheel + = Form1_MouseWheel;