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;
   }
}
Advertisements
Tagged with: , ,
Posted in Formation

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow me
   RSS Feed    Twitter    Linked In

Write you email address to subscribe at this blog and to receive new posts by mail.

Join 565 other followers

Who I am?






%d bloggers like this: