Tôi có một combobox và tôi muốn ngăn người dùng di chuyển qua các mục bằng con lăn chuột.C# - làm cách nào để ngăn chặn việc di chuyển chuột trong hộp tổ hợp của tôi?
Có cách nào dễ dàng để làm điều đó không?
(C#, VS2008)
Tôi có một combobox và tôi muốn ngăn người dùng di chuyển qua các mục bằng con lăn chuột.C# - làm cách nào để ngăn chặn việc di chuyển chuột trong hộp tổ hợp của tôi?
Có cách nào dễ dàng để làm điều đó không?
(C#, VS2008)
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);
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;
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
Điều này hiện không hoạt động với Mono. https://bugzilla.xamarin.com/show_bug.cgi?id=25201 – chrish
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; ' –