Mam combobox i chcę uniemożliwić użytkownikowi przewijanie przedmiotów za pomocą kółka myszy.C# - Jak zapobiec przewijaniu kółkiem myszy w moim combobox?
Czy istnieje prosty sposób na zrobienie tego?
(C#, VS2008)
Mam combobox i chcę uniemożliwić użytkownikowi przewijanie przedmiotów za pomocą kółka myszy.C# - Jak zapobiec przewijaniu kółkiem myszy w moim combobox?
Czy istnieje prosty sposób na zrobienie tego?
(C#, VS2008)
użyć zdarzenia MouseWheel dla ComboBox:
void comboBox1_MouseWheel(object sender, MouseEventArgs e) {
((HandledMouseEventArgs)e).Handled = true;
}
Uwaga: musisz utworzyć zdarzenie w postaci kodu:
comboBox1.MouseWheel += new MouseEventHandler(comboBox1_MouseWheel);
używam innego rozwiązanie, które działa również na Mono.
Celem jest zapobieganie przypadkowemu przewijaniu (wtedy użytkownik nie patrzy na comboBox przy użyciu kółka myszy). Jeśli przewinie poza widoczną częścią comboBox, pole kombi nie powinno się przewijać, w przeciwnym razie powinno.
Moje rozwiązanie:
Umieść pole tekstowe tylko czytać poza widocznej części ekranu. W formula_load umieściłem linię: hiddenTextbox.left = -100;
Ustaw fokus na to pole tekstowe, gdy mysz opuszcza pole kombi za pomocą zdarzenia opuszczania myszy. W comboBox1_MouseLeave umieściłem linię: hiddenTextbox.focus();
Uchwyt zdarzenia mouseWheel: From1.MouseWheel + = Form1_MouseWheel; textBoxHidden.MouseWheel + = Form1_MouseWheel;
Działa idealnie, dzięki! Sidenote: jeśli chcesz, aby przewijanie wciąż obowiązywało po opuszczeniu ComboBox, po prostu dodaj linie: "ComboBox control = (ComboBox) sender;" i "if (! control.DroppedDown)" przed linią "((HandledMouseEventArgs) e) .Handled = true". – Heliac
To obecnie nie działa z Mono. https://bugzilla.xamarin.com/show_bug.cgi?id=25201 – chrish
Wiem, że jest stary, ale podoba mi się ta wersja zaraz po 'InitializeComponent();' w konstruktorze formularza: 'comboBox1.MouseWheel + = (o, e) => ((HandledMouseEventArgs) e) .Handled = true; ' –