Laden...

Datagridview springt zu ersten Spalte wenn eine Zeile ausgewaehlt wird

Erstellt von andrehoyer vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.450 Views
A
andrehoyer Themenstarter:in
4 Beiträge seit 2009
vor 13 Jahren
Datagridview springt zu ersten Spalte wenn eine Zeile ausgewaehlt wird

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

J
3.331 Beiträge seit 2006
vor 13 Jahren

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

A
andrehoyer Themenstarter:in
4 Beiträge seit 2009
vor 13 Jahren

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

A
andrehoyer Themenstarter:in
4 Beiträge seit 2009
vor 13 Jahren

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....