I have a combobox and I want to prevent the user from scrolling through the items with the mousewheel.
Is there an easy way to do that?
(C#, VS2008)
Use the MouseWheel event for your ComboBox:
void comboBox1_MouseWheel(object sender, MouseEventArgs e) { ((HandledMouseEventArgs)e).Handled = true; }
Note: you'll have to create event in code:
comboBox1.MouseWheel += new MouseEventHandler(comboBox1_MouseWheel);
For WPF, handle the PreviewMouseWheel
event instead.
It would also be a good idea to consider ComboBox.IsDropDownOpen
so the user can still use mouse scroll if there are a lot of items in the selection when the ComboBox
is expanded.
Another thing is to apply the same behavior across the whole application.
I usually do all the above using the following code:
App.xaml
<Application.Resources> <Style TargetType="ComboBox"> <EventSetter Event="PreviewMouseWheel" Handler="ComboBox_PreviewMouseWheel" /> </Style> </Application.Resources>
App.xaml.cs
private void ComboBox_PreviewMouseWheel(object sender, System.Windows.Input.MouseWheelEventArgs e) { e.Handled = !((System.Windows.Controls.ComboBox)sender).IsDropDownOpen; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With