2018-11-16

Gestion de l’évenement KeyPress lors de l’édition d’une cellule du DataGridView

Récemment, un développeur m’a demandé comment pouvoir capturer les événements KeyPress ou KeyDown sur la cellule, en modification, d’un DataGridView. L’objectif étant de filtrer les encodages de l’utilisateur lorsqu’il modifie le contenu de la cellule… par exemple, refuser les chiffres et n’accepter que des caractères alphanumériques (pour un identificateur).

Après quelques recherche, voici la solution :

  • Soit créer sa propre colonne et y gérer les événements souhaités. Ce qui peut être lourd pour un cas aussi simple.
  • Soit intercepter l’événement EditingControlShowing pour ajouter la gestion de l’événement KeyPress sur le composant en édition.

La solution la plus simple est donc :

private void dataGridView1_EditingControlShowing(object dgvSender, DataGridViewEditionControlShowingEventArgs eventArgs)
{
   eventArgs.Control.KeyPress += delegate(object sender, KeyPressEventArgs e)
   {
     if (e.KeyChar >= '0' && e.KeyChar <= '9')
         e.Handled = true;
   }
}

Leave a Reply

Your email address will not be published. Required fields are marked *