2009-08-25 4 views
1

Ich habe DatGridView an BindingSource gebunden und ich versuche, es nach der Einstellung seiner DataSource nach unten zu scrollen.Programmgesteuert Scrollen von DataGridView zur letzten Zeile nach der Einstellung der DataSource

MoveLast() der letzten Zeile der Bindungsquelle ausgewählt, aber nicht nach unten scrollen. Ich habe versucht, FirstDisplayedScrollingRowIndex zu setzen, aber es wirft InvalidOperationException mit einer Meldung "Es ist kein Platz zum Anzeigen von Zeilen verfügbar".

Wenn ich MoveLast aufrufen oder FirstDisplayedScrollingRowIndex später ändern, zum Beispiel in Button-Click-Ereignis, funktioniert es gut, aber ich möchte ein neues Fenster mit DataGridView die letzte Reihe als aktuell und für den Benutzer sichtbar öffnen.

Antwort

3

Klingt wie Ihr Aufruf FirstDisplayedScrollingRowIndex im Konstruktor? Versuchen Sie es im load-Ereignis des Formulars. Als letzten Ausweg können Sie dies im Activate-Event tun und ein Flag setzen, so dass es nur einmal ausgeführt wird, nachdem das Formular fertig gezeichnet wurde.

0

Verwenden Sie die Methode "scrollToRowAtIndexPath: atScrollPosition: animated" der Tabelle.

so könnte man es gerne verwenden:

[self.table scrollToRowAtIndexPath: indexPath atScrollPosition: UIScrollPositionMiddle animiert: Ja];

Die "atScrollPosition" teilt Ihnen mit, wo die ausgewählte Zeile auf dem Bildschirm angezeigt werden soll. Sie können UIScrollPositionTop, UIScrollPositionMiddle oder UIScrollPositionBottom auswählen.

Das "animierte" Feld zeigt nur an, ob das Scrollen animiert werden soll, oder es einfach so erscheinen zu lassen, denke ich.

Sie können Ihre eigenen indexPath erstellen, wenn Sie brauchen: [NSIndexPath indexPathForRow: (Zeilennummer oder Integer-Wert) insection: 0]

„insection“ würde der Abschnitt der Pfad wollen, wenn Sie habe einen, gib einfach 0 ein. Die meisten Tabellen haben sowieso nur einen Abschnitt.

+0

Dieser Link kann auch helfen: http://stackoverflow.com/questions/724892/uitableview-scroll-to-the-top – georryan

+1

Whut? Das ist WinForms, nicht Apples Cocoa :) – xyz

+0

Hoppla, so ist es! Mein Fehler. =) – georryan

Verwandte Themen