2010-06-17 3 views
36

Sono di fronte a un problema nell'impostazione della proprietà combo in modo che solo l'utente possa selezionare i valori forniti dagli elementi, ma non posso scrivere nella casella combinata.Come faccio a impostare la combobox in sola lettura o l'utente non può scrivere in una casella combinata, solo in grado di selezionare gli elementi dati?

Come posso farlo in C#?

+0

Questa domanda è stata fatta prima. Per favore guarda qui: http://stackoverflow.com/questions/85702/how-can-i-make-a-combobox-non-editable-in-net – Peter

risposta

94

Basta cambiare il DropDownStyle a DropDownList. O se vuoi che sia letto completamente solo tu puoi impostare Enabled = false, o se non ti piace l'aspetto di questo a volte ho due controlli, una casella di testo di sola lettura e una casella combinata e poi nascondi la combo e mostri la casella di testo se dovrebbe essere completamente a sola lettura e viceversa.

+0

Ma per favore nota: readonly! = Disabled. –

+0

@Henk: Sì, è per questo che ho detto "se non ti piace l'aspetto di quello ..." poiché di solito è il problema principale che le persone trovano disabilitando un controllo piuttosto che impostandolo come readonly. –

+0

Grazie amico è stato semplice, ma se non si conosce questo è un mistero per voi, grazie funziona – Badr

13

Penso che vogliate cambiare l'impostazione chiamata "DropDownStyle" come "DropDownList".

4

La soluzione è di modificare la proprietà DropDownStyle in DropDownList. Aiuterà.

12

Nel gestore di eventi keypress:

e.Handled = true; 
+0

La migliore soluzione! Grazie –

+0

Ciò non impedisce l'eliminazione di un testo selezionato nella casella combinata. – ajeh

10

Fai il DropDownStyle per DropDownList

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList; 
3

Prova questa:

private void comboBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     // comboBox1 is readonly 
     e.SuppressKeyPress = true; 
    }