Entwickler-Ecke

WinForms - DataGridView Markierte Zeile in der Mitte anzeigen


edvazubi - Mo 24.06.19 11:43
Titel: DataGridView Markierte Zeile in der Mitte anzeigen
Hallo, ich hab da mal wieder eine Frage. Ich habe ein DataGridView in dem ich mit Hilfe einer Suche einen Wert im DataGridView angezeigt bekomme. Dies funktioniert soweit einwandfrei. Ich würde die markierte Zeile allerdings gerne nicht an oberster Stelle haben, sondern an dritter oder vierter, sodass ich über ihr und unter ihr Werte sehe. Wie bekomme ich das hin? Mit folgendem Code bekomme ich die Zele angezeigt:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
if (row.Cells[0].Value.ToString().Equals(search2))
{
    dataGridViewABC.ClearSelection();
    row.Selected = true;
    dataGridViewABC.FirstDisplayedScrollingRowIndex = row.Index;
    HideSuche();
    dataGridViewABC.CurrentCell = row.Cells[0];
    break;
}


Moderiert von user profile iconTh69: Codeformatierung überarbeitet.


Th69 - Mo 24.06.19 11:55

Du verwendest doch schon FirstDisplayedScrollingRowIndex? Damit kannst du dann doch mit ein bißchen Mathematik den richtigen Wert setzen (mußt nur aufpassen, daß du nicht kleiner als 0 setzt).


edvazubi - Di 25.06.19 07:36

Das ich beim FirstDisplayScrollingRowIndex den richtigen Wert setzen kann ist mir bewusst, nur was ich auch mache, es passiert bei mir nichts...


Th69 - Di 25.06.19 07:50

Hast du schon mal versucht die beiden Zeilen FirstDisplayedScrollingRowIndex und CurrentCell zu vertauschen?


edvazubi - Di 25.06.19 07:55

Und dann den Wert bei row.Cells[0] auf zum Beispiel 3 setzen?


Th69 - Di 25.06.19 08:31

Nein, ich meine

C#-Quelltext
1:
2:
dataGridViewABC.CurrentCell = row.Cells[0];
dataGridViewABC.FirstDisplayedScrollingRowIndex = row.Index - 3// <- und hier jetzt noch die Abfrage auf "< 0" einbauen


edvazubi - Di 25.06.19 08:40

Hat funktioniert. Ich stand irgendwie auf dem Schlauch, obwohl die Lösung so einfach war. Danke!