2010-08-02 9 views
0

J'ai un DataGridView dans lequel une colonne contient des données que l'utilisateur doit aligner en ajoutant des espaces. Par exemple, les deux premières lignes peuvent contenir:En mode édition, passez à la cellule suivante et restez en mode édition pour VB.NET DataGridView?

kumbu 
kuimbiu 

Et l'utilisateur doit être en mesure d'aligner les lettres qui correspondent en ajoutant des espaces. Quelque chose comme ceci:

ku mb u 
kuimbiu 

Maintenant, afin de le faire avec le DataGridView, l'utilisateur doit entrer dans le mode d'édition dans la cellule supérieure, ajouter des espaces, appuyez sur Entrée, rentrer dans le mode d'édition dans la cellule inférieure, puis ajouter des espaces. Nos utilisateurs aimeraient pouvoir, en mode édition dans la cellule supérieure, appuyer sur la flèche vers le bas et avancer vers la seconde cellule tout en restant en mode édition, en sauvegardant les clics ou les touches F2.

Existe-t-il un bon moyen de le faire? J'ai essayé de piéger la touche fléchée vers le bas, en laissant le mode d'édition, en avançant une cellule, puis en passant en mode d'édition avec la méthode BeginEdit de la grille, mais cela ne fait pas ce que je veux.

Des idées?

Répondre

1

Lorsque vous quittez la cellule, capturez le statut d'édition dans une variable de classe. Lorsque l'utilisateur enfonce ou entre, la cellule suivante commencera le mode d'édition, mais seulement si la cellule précédente était en mode d'édition. Vous pouvez ajouter une logique supplémentaire si vous voulez qu'elle soit basée sur des colonnes.

Private blnEditMode As Boolean = False 
Private Sub dgv_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellEnter 
    If blnEditMode Then 
     dgv.BeginEdit(False) 
    End If 
End Sub 

Private Sub dgv_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv.CellLeave 
    blnEditMode = dgv.IsCurrentCellInEditMode 
End Sub 
Questions connexes