Comment faire pour éviter d'aller à la ligne suivante après la modification de la DataGridViewTextBoxColumn et en appuyant sur EnterKey?

Je suis en train de travailler sur un programme avec DataGridViews.
Dans un DatagridView il y a un DataGridViewTextBoxColumn, qui est activé à être modifié par l'utilisateur. Lorsque l'utilisateur se fait à taper le nombre dans ce, il appuie sur ENTRÉE sur le clavier. Maintenant, le DataGridView fait tout son Events, et après tout Events, la dernière chose est le problème.

Tout est fait, et Windows va choisir le prochain DataGridViewRow, et je ne suis pas capable d'empêcher cela.

J'ai essayé

if (e.KeyData == Keys.Enter) e.SuppressKeyPress = true; //or e.Handled 

dans presque tous les cas, j'ai trouvé. Malheureusement je n'ai pu Empêcher la touche ENTRÉE lorsque le DataGridViewTextBoxColumn n'est pas en mode d'édition.

Heres ma methode t trouver l'ENTRÉE alors que dans l'Édition

L'ajout de l'Événement

private void dgr_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
    e.Control.KeyPress += new KeyPressEventHandler(dgr_KeyPress_NumericTester);
}

Et c'est le cas pour accepter l'entrée numérique uniquement.

private void dgr_KeyPress_NumericTester(object sender, KeyPressEventArgs e)
{
    if (!Char.IsDigit(e.KeyChar) && e.KeyChar != 8) e.Handled = true;
}

Pour expliquer dans le détail:

Lorsque l'utilisateur entre une Valeur, qui a une certaine dependings, je voudrais donner un autre contrôle du focus, de sorte qu'il est utilisé pour corriger la dependings.

J'ai aussi essayé avec DependingControl.Focus() mais le dernier "entrée" va être la dernière chose sur la vue.

Ce que quelqu'un sait comment faire pour éviter cela?

Il vous suffit de remplacer le ProcessCmdKey, voir [ici pour savoir comment](windowsclient.net/blogs/faqs/archive/2006/05/30/... ) et [pourquoi][2] [2]: blogs.msdn.com/b/jfoscoding/archive/2005/01/24/359334.aspx

OriginalL'auteur Max | 2011-04-24