2010-11-30 5 views
0

J'essaie de concentrer les entrées et de déclencher l'événement d'édition sur chaque nouvelle ligne que j'ajoute à un DataGridView dans mon formulaire.Sélectionnez la première cellule visible de la nouvelle ligne dans DataGridView

C'est le code que j'essaie d'utiliser pour y parvenir. Le "grid_flag" est une cellule cachée qui est utilisée pour stocker des états personnalisés pour une ligne.

Avant d'ajouter une ligne, ce que nous voyons sur la forme: Before we add a new row.

C'est ce que nous voyons quand nous essayons réellement et ajouter une nouvelle ligne: Row Add button clicked.

avis que les deux la colonne 0,0 et la première colonne visible de la nouvelle ligne sont sélectionnées, mais la colonne 0,0 a le focus. Je ne souhaite pas 0,0 être sélectionné ou avoir le focus. Je vois aussi ici que l'indicateur de ligne est pointée à la ligne 0 aussi ...

Voilà comment je voudrais voir les choses après avoir cliqué sur mon bouton Ajouter: Desired outcome from clicking the Add button.

Est-ce que quelqu'un sait où je me trompe avec le code? J'ai cherché SO pendant la majeure partie de la journée en essayant de résoudre celui-ci.

Répondre

0

Au lieu d'utiliser votre événement RowAdded de DataGridView pour définir le CurrentCell, ajoutez le code suivant où vous ajoutez un nouveau record à votre DGV (dans votre événement bouton Ajouter Cliquez sur Je suppose):

''# Add the new record to your Data source/DGV. 

For Each row As DataGridViewRow In grd_GoldAdders.Rows 
    If row.Cells("grid_flag").FormattedValue = Constants.[New] Then 
     grd_GoldAdders.CurrentCell = row.Cells("AssySiteColumn") ''# I'm calling the first column in your DGV 'AssySiteColumn'. 
     grd_GoldAdders.BeginEdit(False) 
     Exit For 
    End If 
Next 

Cette le code boucle simplement toutes les lignes de votre DGV et spécifie comme CurrentCell la première cellule de la première ligne avec la valeur de l'indicateur Constants.[New].

+0

Ceci ne fonctionnera pas si les lignes sont triées car la dernière rangée (numériquement) dans la grille peut ne pas être la dernière rangée (chronologiquement) à avoir été ajoutée. – Mike

+0

@Mike Ceci est vrai - J'ai édité ma réponse pour gérer ce cas. Il y a d'autres façons de faire ce que vous devez faire, mais pour les explorer, vous devrez fournir plus de détails. –

Questions connexes