J'ai quelques éléments dans une ComboBox (WinForms avec C #). Je veux que leur contenu soit statique afin qu'un utilisateur ne puisse pas modifier les valeurs qu'il contient lorsque l'application est exécutée. Je ne veux pas non plus que l'utilisateur ajoute de nouvelles valeurs à la ComboBox
Utilisez la propriété ComboStyle:
comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
C’est une autre méthode que j’utilise, car changer DropDownSyle
en DropDownList
lui donne un aspect 3D et est parfois tout simplement laid.
Vous pouvez empêcher les entrées utilisateur en gérant l'événement KeyPress
de la zone de liste déroulante comme ceci.
private void ComboBox1_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
Vous pouvez modifier le DropDownStyle dans les propriétés en DropDownList. Cela n'affichera pas la zone de texte pour le filtre.
J'ai essayé ComboBox1_KeyPress mais cela permet de supprimer le caractère et vous pouvez également utiliser la commande copier/coller. My DropDownStyle est défini sur DropDownList mais n’est toujours pas utilisé. J'ai donc fait l'étape ci-dessous pour éviter l'édition de texte combobox.
Le code ci-dessous gère les touches delete & backspace. Et désactive également la combinaison avec la touche de contrôle (par exemple, ctr + C ou ctr + X)
Private Sub CmbxInType_KeyDown(sender As Object, e As KeyEventArgs) Handles CmbxInType.KeyDown
If e.KeyCode = Keys.Delete Or e.KeyCode = Keys.Back Then
e.SuppressKeyPress = True
End If
If Not (e.Control AndAlso e.KeyCode = Keys.C) Then
e.SuppressKeyPress = True
End If
End Sub
Dans le chargement du formulaire, utilisez la ligne ci-dessous pour désactiver le clic droit sur le contrôle combobox Afin d'éviter tout copier/coller via un clic de souris.
CmbxInType.ContextMenu = new ContextMenu()