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.
Il suffit de définir votre combo en tant que DropDownList:
this.comboBoxType.DropDownStyle = ComboBoxStyle.DropDownList;
Je pense que vous souhaitez définir DropDownStyle sur DropDownList.
this.comboBoxType.DropDownStyle =
System.Windows.Forms.ComboBoxStyle.DropDownList;
Vous pouvez ajouter e.Handled = true
à votre événement KeyPress:
private void Combo1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
Dans la fenêtre des propriétés du contrôle, indiquez DropDownStyle equal DropDownList .
Il suffit de définir la propriété DropDownStyle sur DropDownList Regardez cette image Exemple
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;
}
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
Ceci verrouille la saisie manuelle de Combobox et affiche uniquement les éléments de liste déroulante.
this.yourcomboBoxname.DropDownStyle = ComboBoxStyle.DropDownList;