Ho una casella combinata e voglio impedire all'utente di scorrere gli oggetti con la rotellina del mouse.C#: come impedire lo scorrimento della rotellina del mouse nella mia casella combinata?
C'è un modo semplice per farlo?
(C#, VS2008)
Ho una casella combinata e voglio impedire all'utente di scorrere gli oggetti con la rotellina del mouse.C#: come impedire lo scorrimento della rotellina del mouse nella mia casella combinata?
C'è un modo semplice per farlo?
(C#, VS2008)
utilizzare l'evento MouseWheel per il ComboBox:
void comboBox1_MouseWheel(object sender, MouseEventArgs e) {
((HandledMouseEventArgs)e).Handled = true;
}
Nota: dovrete creare eventi in codice:
comboBox1.MouseWheel += new MouseEventHandler(comboBox1_MouseWheel);
io uso un altro soluzione che funziona anche su Mono.
L'obiettivo è impedire lo scorrimento accidentale (ovvero quando l'utente non sta guardando il comboBox quando si utilizza la rotellina del mouse). Se scorre all'esterno della parte visibile di comboBox, la casella combinata non dovrebbe scorrere, altrimenti dovrebbe.
La mia soluzione:
Inserire una sola lettura casella di testo al di fuori della parte visibile dello schermo. In form_load ho posizionato la riga: hiddenTextbox.left = -100;
Impostare lo stato attivo su questa casella di testo quando il mouse lascia la casella combinata utilizzando l'evento di allontanamento del mouse. In comboBox1_MouseLeave ho posizionato la riga: hiddenTextbox.focus();
Manipolazione del mouse Evento di ruota: From1.MouseWheel + = Form1_MouseWheel; textBoxHidden.MouseWheel + = Form1_MouseWheel;
Funziona perfettamente, grazie! Sidenote: se vuoi che lo scorrimento continui a essere applicato quando il ComboBox viene rilasciato, aggiungi le linee: "ComboBox control = (ComboBox) mittente;" e "if (! control.DroppedDown)" prima della riga "((HandledMouseEventArgs) e) .Handled = true". – Heliac
Attualmente non funziona con Mono. https://bugzilla.xamarin.com/show_bug.cgi?id=25201 – chrish
So che questo è vecchio, ma mi piace questa versione subito dopo 'InitializeComponent();' nel costruttore di moduli: 'comboBox1.MouseWheel + = (o, e) => ((HandledMouseEventArgs) e) .Handled = true; ' –