Hallo zusammen,
ich habe eine Datagridview auf einem Form. Die Datagridview enthaelt mehrere Spalten.
Nun zu meinem Problem:
Wenn ich in der Datagridview nach rechts scrolle und anschliessend eine Zeile auswaehle springt die Datagridview nach links so dass die erste Spalte wieder ersichtlich ist.
Ich moechte aber gerne die Spalten Position behalten zu der ich gescrollt habe.
Ich hoffe mein Problem ist verstaendlich und jemand kann mir helfen.
Danke und Gruss,
Andre
Hallo Andre,
du willst eine bestimmte Situation analysieren. Unter Windows geht das mit Ereignissen; das DGV hat ein Ereignis, das eintritt, wenn die (bisher aktive) Zeile verlassen wird. Dieses Ereignis hat (wie viele andere DGV-Ereignisse) in speziellen EventArgs den Verweis auf die (bisher aktuelle) Zeile und Spalte. Du musst also CurrentCell passend festlegen.
Achtung: Wenn du nicht aufpasst, wird dadurch erneut dieses Ereignis ausgelöst. Vielleicht musst du noch einen Zwischenwert speichern und die neue Zelle erst in einem späteren Ereignis festlegen.
Gruß Jürgen
Hallo Juergen,
danke fuer die Antwort aber ich glaube ich meine doch etwas anderes. Und zwar will ich die Position meiner horizontalen Scrollbar beibehalten wenn ich eine ganze Zeile auswaehle. Momentan springt die Scrollbar und die DGV wieder zur ersten Spalte (links).
Ich habe im Internet schon herausgefunen dass dies mit FirstDisplayedScrollingColumnIndex machbar ist, allerdings kriege ich das momentan noch nicht richtig hin. Der Index zeigt bei mir immer 0 an.
Vielleicht kannst du mir ja einen Ansatz dazu geben?
Danke und Gruss,
Andre
okay, ich bin nun ein Stueckchen weiter gekommen. Ich habe nun folgenden Code:
private int ScrollPosition;
private void dgvBrowserGrid_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
ScrollPosition = dgvBrowserGrid.HorizontalScrollingOffset;
}
private void dgvBrowserGrid_SelectionChanged(object sender, EventArgs e)
{
dgvBrowserGrid.HorizontalScrollingOffset = ScrollPosition;
}
dies funktioniert soweit auch ganz gut, ausser wenn ich die selbe Zeile auswaehle in der momentan eine Zelle ausgewaehlt ist.
Hat vielleicht jemand noch eine Idee.
EDIT: Habe das CellLeave mit dem RowPostPaint ausgetauscht und damit funktioniert es nun so wie ich mir das vorgestellt habe....