web-dev-qa-db-fra.com

Comment empêcher la saisie manuelle dans une ComboBox en C #

J'ai un formulaire en C # qui utilise une ComboBox. Comment puis-je empêcher un utilisateur de saisir manuellement du texte dans la ComboBox en C #?

this.comboBoxType.Font = new System.Drawing.Font("Arial", 15.75F);
this.comboBoxType.FormattingEnabled = true;
this.comboBoxType.Items.AddRange(new object[] {
            "a",
            "b",
            "c"});
this.comboBoxType.Location = new System.Drawing.Point(742, 364);
this.comboBoxType.Name = "comboBoxType";
this.comboBoxType.Size = new System.Drawing.Size(89, 32);
this.comboBoxType.TabIndex = 57;   

Je veux A B C être les seules options.

34
Iakovl

Il suffit de définir votre combo en tant que DropDownList:

this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;
107
Reinaldo

Je pense que vous souhaitez définir DropDownStyle sur DropDownList.

this.comboBoxType.DropDownStyle = 
    System.Windows.Forms.ComboBoxStyle.DropDownList;
14
Justin Pihony

Vous pouvez ajouter e.Handled = true à votre événement KeyPress:

private void Combo1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = true;
    }
7
sherin_

Dans la fenêtre des propriétés du contrôle, indiquez DropDownStyle equal DropDownList .

6
Doicare

Il suffit de définir la propriété DropDownStyle sur DropDownList Regardez cette image Exemple

1
Virgilio Cossa

J'aime garder la possibilité d'insérer manuellement des éléments, mais limiter les éléments sélectionnés à ce qui est dans la liste. J'ajouterais cet événement à la ComboBox. Tant que vous obtenez l'élément SelectedItem et non le texte, vous obtenez les éléments prédéfinis corrects; a, b et c.

private void cbx_LostFocus(object sender, EventArgs e)
{
  if (!(sender is ComboBox cbx)) return;
  int i;
  cbx.SelectedIndex = (i = cbx.FindString(cbx.Text)) >= 0 ? i : 0;
}
1
Tates

Pourquoi utiliser ComboBox alors?

C # a un contrôle appelé Listbox . Techniquement, la différence d’une ComboBox sur une Listbox est qu’une ComboBox peut recevoir des entrées, donc si ce n’est pas le contrôle dont vous avez besoin, je vous suggère d’utiliser ListBox

Guide de consommation Listbox ici: C # ListBox

1
DevEstacion

Ceci verrouille la saisie manuelle de Combobox et affiche uniquement les éléments de liste déroulante.

this.yourcomboBoxname.DropDownStyle = ComboBoxStyle.DropDownList;
0
Adumuah Dowuona