Wie deaktiviere ich die Bearbeitung von Elementen in der Combobox für c #?

157

Ich habe einige Elemente in einer ComboBox (WinForms mit C #). Ich möchte, dass ihr Inhalt statisch ist, damit ein Benutzer die darin enthaltenen Werte nicht ändern kann, wenn die Anwendung ausgeführt wird. Ich möchte auch nicht, dass der Benutzer der ComboBox neue Werte hinzufügt

Mobin
quelle

Antworten:

300

Verwenden Sie die ComboStyle-Eigenschaft:

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
Dan Walker
quelle
38
Dies kann auch im Eigenschaftenfenster des Designers eingestellt werden.
Jeffrey
3
Mit neueren Versionen können Siecombo.Properties.TextEditStyle = DisableTextEditor
Keysharpener
21

Dies ist eine andere Methode, die ich verwende, weil das Ändern DropDownSylein DropDownList3D aussieht und manchmal einfach nur hässlich ist.

Sie können Benutzereingaben verhindern, indem Sie das KeyPressEreignis der ComboBox wie folgt behandeln.

private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
      e.Handled = true;
}
Isuru
quelle
4
Sie können seine Darstellung im Designer FlatStyle ändern :)
StinkyCat
3
@StinkyCat Das ändert nichts am Aussehen der angezeigten Liste, sondern nur am Steuerelement im Formular.
Logarr
Sie müssen mit dem Rechtsklick-Menü umgehen, wo Sie auch die Option Pastehaben. Ich habe keine Ahnung wie gerade.
Sinatr
3
Ok, um Pastees zu entfernen, müssen Sie ein falsches leeres Kontextmenü erstellen und es der ComboBox zuweisen.
Sinatr
7

Yow kann den DropDownStyle in den Eigenschaften in DropDownList ändern. Dadurch wird die TextBox für den Filter nicht angezeigt.

DropDownStyle-Eigenschaft
(Screenshot von FUSION CHA0S .)

Sumit Agrawal
quelle
0

Ich habe ComboBox1_KeyPress ausprobiert, aber es ermöglicht das Löschen des Zeichens und Sie können auch den Befehl Kopieren und Einfügen verwenden. Mein DropDownStyle ist auf DropDownList eingestellt, aber immer noch nicht verwendbar. Also habe ich den folgenden Schritt ausgeführt, um die Bearbeitung von Combobox-Texten zu vermeiden.

  • Der folgende Code behandelt die Lösch- und Rücktaste. Deaktiviert auch die Kombination mit der Steuertaste (z. B. Strg + C oder Strg + X).

     Private Sub CmbxInType_KeyDown(sender As Object, e As KeyEventArgs) Handles CmbxInType.KeyDown
        If e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then 
            e.SuppressKeyPress = True
        End If
    
        If Not (e.Control AndAlso e.KeyCode = Keys.C) Then
            e.SuppressKeyPress = True
        End If
    End Sub
  • Verwenden Sie beim Laden des Formulars die folgende Zeile, um das Klicken mit der rechten Maustaste auf die Combobox-Steuerung zu deaktivieren und das Ausschneiden / Einfügen per Mausklick zu vermeiden.

    CmbxInType.ContextMenu = new ContextMenu()
Sushil Jadhav
quelle