Comment rendre un ComboBox non modifiable dans .NET?

205

Je veux avoir un "select-only" ComboBoxqui fournit une liste d'éléments pour que l'utilisateur puisse choisir. La saisie doit être désactivée dans la partie texte du ComboBoxcontrôle.

Ma recherche initiale de cela a révélé une suggestion trop complexe et erronée pour capturer l' KeyPressévénement.

Cory Engebretson
la source

Réponses:

378

Pour rendre la partie texte d'un ComboBox non modifiable, définissez la propriété DropDownStyle sur "DropDownList". Le ComboBox est désormais essentiellement sélectif uniquement pour l'utilisateur. Vous pouvez le faire dans le concepteur Visual Studio ou en C # comme ceci:

stateComboBox.DropDownStyle = ComboBoxStyle.DropDownList;

Lien vers la documentation de la propriété ComboBox DropDownStyle sur MSDN.

Cory Engebretson
la source
8
Une chose à garder à l'esprit en faisant cela signifie que vous ne pouvez plus mettre à jour la Textpropriété par programme, l'utilisiez pour afficher un message par défaut en utilisantComboBox.SelectedIndex = -1;
Lankymart
Existe-t-il un moyen de le faire via l'interface graphique de Visual C # sans avoir à le modifier dans le code? On dirait qu'une «valeur par défaut» serait une chose normale à vouloir configurer
muzzlator
6
Comment éviter l'apparence grise?
Anders Lindén
2
@ AndersLindén a défini la propriété FlatStyle sur Flat.
Xam
@Xam Alors, où va la frontière? Lorsque je cherche un peu sur Google, il semble que je doive faire le dessin moi-même pour qu'il soit acceptable.
Anders Lindén
67

Pour ajouter une référence GUI Visual Studio, vous pouvez trouver les DropDownStyleoptions sous les propriétés du ComboBox sélectionné:

entrez la description de l'image ici

Ce qui ajoutera automatiquement la ligne mentionnée dans la première réponse au Form.Designer.cs InitializeComponent(), comme ceci:

this.comboBoxBatch.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
invertigo
la source
33

Restez sur votre zone de liste déroulante et recherchez la propriété DropDropStyle dans la fenêtre des propriétés, puis choisissez DropDownList .

LZara
la source
2

COMBOBOXID.DropDownStyle = ComboBoxStyle.DropDownList;

Abhishek Jaiswal
la source
1

Pour continuer à afficher les données dans l'entrée après la sélection, procédez comme suit:

VB.NET
Private Sub ComboBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles ComboBox1.KeyPress
    e.Handled = True
End Sub



C#
Private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    e.Handled = true;
}
Diogo Rodrigues
la source