web-dev-qa-db-fra.com

Comment désactiver l'édition d'éléments dans la liste déroulante pour c #?

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

143
Mobin

Utilisez la propriété ComboStyle:

comboBox.DropDownStyle = ComboBoxStyle.DropDownList;
273
Dan Walker

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;
}
19
Isuru

Vous pouvez modifier le DropDownStyle dans les propriétés en DropDownList. Cela n'affichera pas la zone de texte pour le filtre.

2
Sumit Agrawal

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()
    
0
J Sushil