2009-03-16 6 views
0

Wie Sie jetzt den Benutzer können ein Element aus der ComboBox per Tastatur direkt auswählen. Mit der Maus blockiere ich den Benutzer, um einige Elemente auszuwählen, abhängig vom Status des hinteren Objekts. Was ist die beste Lösung, um dies zu stoppen, wenn der Benutzer die Tastatur verwendet?Verhindern ComboBox Tastaturauswahl

+0

Eine bessere, üblichere Übung ist, in die Combo-Box nur die Elemente, die ausgewählt werden können, zu setzen. Es verhindert nicht die Tastaturbenutzung (ich würde als Benutzer diese Beleidigung finden!) Und den Code vereinfachen. – PhiLho

+0

stimme mit dir überein. Aber mein Kunde hat in diesem Fall die Macht :) –

Antwort

0
private void comboBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     e.Handled = true; 
    } 

Mit diesem können Sie alle Tastaturaktionen auf Ihrer ComboBox abbrechen.

Annahmen: WinForms

+0

Mit derselben Logik behaupte ich, dass Ihr Beispiel zu weit im Umfang ist. Beachten Sie, dass das OP sagt "Ich blockiere den Benutzer, um ** einige Elemente **" – Cerebrus

+0

Meine Verzeihung für den Kommentar dann :) – NileshChauhan

2

die Usability-Probleme Abgesehen von dieser Art von Anforderung (viele Benutzer sind die Gewohnheit, mit der Tastatur und es nicht intuitiv finden würde) entstehen, geben Sie einfach die KeyDown Ereignis umgehen konnte und Setzen Sie KeyEventArgs.Cancel auf True.

private void myCombo_KeyDown(object sender, KeyEventArgs e) 
{ 
    // Cancel the event if Up or Down keys are pressed. 
    if ((e.KeyCode == Keys.Down) || (e.KeyCode == Keys.Up)) 
    e.Handled = true; 
} 

Edit: Klärung, bevor ich wieder downvoted erhalten - Dies ist ein Beispiel, die das Verfahren veranschaulicht. Es ist Aufgabe des OP, zu entscheiden, welche Schlüssel er/sie verbieten möchte.^^

+0

Wenn Sie ein Element mit Text haben, sagen "xyz", beim Drücken von "x" wird es sein ausgewählt. Der obige Code wird das nicht behandeln. – NileshChauhan

+0

Mein Beispiel ist illustrativ. Ich überlasse den Ausschluss bestimmter Tastaturereignisse dem OP. – Cerebrus

+0

Ich stimme Cerebrus zu. Ich habe die Methode gesehen, und in meinem Fall habe ich entschieden, wie ich damit umgehen soll –