Announcement

Collapse
No announcement yet.

Per Code Focus in nächste Zeile setzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Per Code Focus in nächste Zeile setzen

    Hallo,

    wie kann man per Code den Focus in einem DataGridview automatisch auf die nächste Zeile bzw. auch auf eine bestimmte Spalte setzen?

    Vielen Dank
    Daniel

  • #2
    Hallo,

    wenn Du den "MoveNext" Befehl der dem DataGrid zugrunde liegenden BindingSource abfeuerst (MeineBindingSource.MoveNext), bekommt die entsprechende Row in Deinem DataGrid den Focus (falls es einen nächsten gibt!).
    Wenn Du anschließend der gewünschten Spalte der dann aktuellen Row(MeineDataRowView = Me.MeineBindingSource.Current) den Focus gibst (MeineDataRowView.Item("Spaltenname").Focus)), dann sollte Dein Problem gelöst sein.
    Tip: Falls Du noch mal ein Thema erstellst, lege Dein Problem ausführlicher dar, dann bekommst Du bestimmt eine größere Resonanz ;-))

    M

    Comment


    • #3
      Per Code Focus in nächste Zeile setzen

      Hey,

      vielen Dank für die rasche Antwort. Ich hatte es bereits mit MoveNext der BindingSource versucht, aber das funktioniert nicht.

      Das Problem ist folgendes: Ich habe ein Formular mit einer Mastertabelle, deren Inhalte an Textboxen gebunden sind und eine Detailtabelle, die an ein Datagrid gebunden sind. Wenn ich nun z.B. im Datagrid Daten geändert habe ohne die Zeile danach verlassen zu haben, und dann über BindingSource.MoveNext der Haupttabelle in den nächsten Datensatz der Haupttabelle springe, erkennt das Programm die Änderungen in der Detailtabelle mit Haschanges nicht. Die lösung, per code in den nächsten Datensatz vor bs.Movenext zu springen, ist vielleicht etwas umständlicher. Wie könnte man dieses Problem sonst lösen?

      Vielen Dank
      Daniel

      Comment


      • #4
        Hallo Daniel,

        das ist ein typisches Validate-Problem.
        Ich würde das folgendermaßen versuchen zu lösen:
        1) Ein PositionChange - Ereignis der Binding Source der Master Tabelle installieren
        2) In dieser PositionChange-Ereignis-Sub ein Me.Validate auslösen

        Es gibt da sicherlich mehrere Wege nach Rom. Auf jeden Fall aber müssen die Zellen des Datagrid validiert werden bevor der Datensatzzeiger moved, da ansonsten die geänderten Werte des DataGrid ignoriert werden. Wie Du das Bewegen in der BindingSource abfängst, ist Deiner Kreativität überlassen, da es da einige Möglichkeiten gibt.

        Grüße

        M

        Comment

        Working...
        X