2010-11-30 4 views
0

Ich versuche, Eingabe zu konzentrieren und feuern das Bearbeitungsereignis für jede neue Zeile, die ich zu einem DataGridView in meinem Formular hinzufügen.Wählen Sie die erste sichtbare Zelle der neuen Zeile in DataGridView

Dies ist der Code, den ich versuche, dies zu erreichen.

Die "grid_flag" ist eine versteckte Zelle, die zum Speichern von benutzerdefinierten Status für eine Zeile verwendet wird.

Prior eine Zeile hinzufügen, das ist, was wir auf dem Formular zu sehen: Before we add a new row.

Dies ist, was wir sehen, wenn wir tatsächlich versuchen und eine neue Zeile hinzufügen: Row Add button clicked.

Beachten Sie, dass sowohl die Spalte 0,0 und die erste sichtbare Spalte der neuen Zeile sind ausgewählt, aber die Spalte 0,0 hat den Fokus. Ich möchte nicht, dass 0,0 entweder ausgewählt wird oder den Fokus hat. Ich sehe hier auch, dass die Zeilenanzeige in Zeile zeigt 0 zu ...

Dies ist, wie ich möchte die Dinge sehen, nachdem meine Schaltfläche Hinzufügen klicken: Desired outcome from clicking the Add button.

Weiß jemand, wo ich falsch werde mit dem Code? Ich habe den Großteil des Tages nach SO gesucht, um diesen zu lösen.

Antwort

0

Statt Ihre Datagridview der RowAdded Fall mit der Current, fügen Sie den folgenden Code zu setzen, wo immer Sie einen neuen Datensatz Ihre DGV sind das Hinzufügen (in Ihrer Schaltfläche Hinzufügen der Click-Ereignis gehe ich davon aus):

''# 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 

Diese Der Code durchläuft einfach alle Zeilen in Ihrem DGV und gibt als CurrentCell die erste Zelle in der ersten Zeile mit Ihrem Constants.[New] Flag-Wert an.

+0

Dies funktioniert nicht, wenn die Zeilen sortiert sind, da die letzte Zeile (numerisch) im Raster möglicherweise nicht die letzte Zeile (chronologisch) von hinzugefügt wurde. – Mike

+0

@Mike Das stimmt - ich habe meine Antwort bearbeitet, um diesen Fall zu bearbeiten. Es gibt andere Möglichkeiten zu tun, was Sie tun müssen, aber um sie zu erkunden, müssen Sie mehr Details bereitstellen. –

Verwandte Themen