Datagrid et text numérique

cs_Byrong Messages postés 224 Date d'inscription mercredi 28 septembre 2005 Statut Membre Dernière intervention 24 juillet 2013 - 6 août 2010 à 15:54
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 - 8 août 2010 à 19:20
Bonjour

voila j'aimerai n'accepter que les touche numérique dans les rows d'un datagridview.

            if (!char.IsDigit(e.KeyChar) && !(e.KeyChar.ToString().Equals("\b")))
            {
                e.Handled true;  //n'affiche pas   etfalse => affiche
            }
            else 
            {
                e.Handled = false;
            }
            // Si la touche Entrez doit jouer le rôle de tabulation, ajoutez le code suivant
            if ( e.KeyChar == 13)
            {
                SendKeys.Send("{TAB}");
            } 


J'ai fait cela sur le keypress du datagridview mais cela n'a aucun effet...

pouvais vous m'aider?

1 réponse

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
8 août 2010 à 19:20
Bonjour

Malheureusement l'evenement KeyPress n'est pas généré losqu'on est en édition d'une cellule.

le seul moyen est de "trapper" l'evenement au niveau de la forme.

ensuite tu trappes les évenments debut et fin d'édition de cellule
et tu positionnes un booleen indiquant qu'on est en édition pour traiter les touches

ex:

//La form
KeyPreview = true;
KeyPress += new KeyPressEventHandler(Form1_KeyPress);

//La datagridview
dataGridView1.CellEndEdit += new DataGridViewCellEventHandler(dataGridView1_CellEndEdit);
dataGridView1.CellContentClick += new DataGridViewCellEventHandler(dataGridView1_CellContentClick);


bool CellEditing = false;
private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
   CellEditing = true;
}

private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
    CellEditing = false;

}
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (CellEditing)
    {
if (!char.IsDigit(e.KeyChar) && !(e.KeyChar.ToString().Equals("\b")))
    e.Handled true;  //n'affiche pas   etfalse => affiche
else
{
    e.Handled = false;
        }
// Si la touche Entrez doit jouer le rôle de tabulation, ajoutez le code suivant
if (e.KeyChar == 13)
{
SendKeys.Send("{TAB}");
}
    }
}


Maleureusement, encore, je ne pense pas que tu puisses récuperer l'evenement de la touche "Entrer".


Bob
C# is amazing, enjoy it!
0
Rejoignez-nous