J’ai un datagridview dans les formulaires Windows, le comportement par défaut lors de la modification des valeurs est qu’après l’édition d’une cellule, lorsque j’appuie sur Entrée, la ligne sélectionnée passe à la suivante.
Je ne veux pas ça, je veux quitter le mode édition mais restr dans la même cellule.
C’est possible?
Vous pouvez personnaliser DataGridView
pour substituer la méthode ProcessDialogKey
:
public class CustomGrid : DataGridView { protected override bool ProcessDialogKey(Keys keyData) { if (keyData == Keys.Enter) { EndEdit(); return true; } return base.ProcessDialogKey(keyData); } }
Événement KeyDown:
Si e.KeyCode = Keys.Enter Puis e.SuppressKeyPress = True
C’est très simple. Pendant la modification, enregistrez le cellindex
dans une variable, puis sélectionnez-le à nouveau.
Obtenez l’index de la colonne et de la ligne:
e.ColumnIndex; e.RowIndex;
et enregistrez-les dans une variable. Après avoir édité la cellule, sélectionnez à nouveau la cellule:
dataGridView1.Rows[rindex].Cells[cindex].Selected = true;