2008-10-02 11 views
21

Ich schreibe eine GUI in C#, Visual Studio 2008, mit dem Designer und WinForms. Ich habe ein ComboBox-Steuerelement, und ich möchte, dass es nur erlaubt, aus den bereitgestellten Optionen auszuwählen und eine vom Benutzer eingegebene Zeichenfolge nicht zu akzeptieren. Es scheint nicht, eine ReadOnly-Eigenschaft zu haben, und ihre Deaktivierung behindert die Lesbarkeit des Steuerelements (und verhindert auch die Benutzerauswahl).Readonly ComboBox in WinForms

+0

Die DropDownStyle-Eigenschaft war, was ich gesucht habe. Ich kann nicht glauben, dass ich das übersehen habe. –

+3

mögliche Duplikate von [Wie kann ich eine ComboBox nicht editierbar in .net machen?] (Http://stackoverflow.com/questions/85702/how-can-i-make-a-combobox-non-editable-in- net) – nawfal

Antwort

46

Set Dropdownstyle auf "Dropdownlist"

+1

Aber dann kann man die Combobox nicht programmatisch manipulieren. – clamchoda

1

Versuchen Sie, eine DropDownListBox

6

Stellen Sie die ComboBox.DropDownStyle Eigenschaft auf ComboBoxStyle.DropDownList verwenden.

2

Verwenden Sie einen ähnlichen Code wie die folgenden, um die zulässigen Optionen und nur diese Optionen festzulegen.

comboBox1.DropDownStyle = ComboBoxStyle.DropDownList; 
comboBox1.Items.AddRange(new object[] { 
    "One", 
    "Two", 
    "Three", 
    "Four"}); 
3

Eine weitere einfache Möglichkeit.

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

Meine Forderung: einmal Benutzer eine Eingabe durch Combo-Box geben sie den Wert nicht ändern kann, bevor sie einreichen. Sie können nur diesen Wert lesen.

Gemäß meiner Anforderung mache ich die folgenden Dinge.

1) Eingabe vom Benutzer über Combo-Box erhalten.
2) Kopieren Sie den Wert der Combo-Box in eine Textbox (die schreibgeschützt und unsichtbar ist).
3) Falsche Sichtbarkeit der Combobox.
4) Wahr die Sichtbarkeit der schreibgeschützten Textbox.

Tun Sie dies mit Ereignissen.