Entwickler-Ecke

WinForms - DataGridView zur markierten Zeile scrollen


edvazubi - Fr 22.03.19 13:41
Titel: DataGridView zur markierten Zeile scrollen
Hallo, mit Hilfe einer TextBox suche ich in einem DataGridView nach einem bestimmten Wert. Diese bekomme ich mit folgender Funktion auch heraus:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
        public void searchweek()
        {
            string searchValue = textBox1.Text;

            dataGridViewDBLW.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            try
            {
                foreach (DataGridViewRow row in dataGridViewDBLW.Rows)
                {
                    if (row.Cells[0].Value.ToString().Equals(searchValue))
                    {
                        row.Selected = true;
                        break;
                    }
                }
            }
            catch (IOException ex)
            {
                if (ex.Source != null)
                    MessageBox.Show("IOException source:{0}", ex.Source);
                throw;

            }


Nun möchte ich, das die Zeile die dadurch markiert wird, auch angezeigt wird wenn sie nicht in meinem sichtbaren Bereich ist.

Mit der Eigenschaft "DataGridView.FirstDisplayedScrollingRowIndex" soll das ganze realisierbar sein, ich bekomme es aber nicht so wirklich zum laufen.

Moderiert von user profile iconTh69: C#-Tags hinzugefügt


Th69 - Fr 22.03.19 14:24

Woran scheitert es denn?

Probiere mal (vor dem break):

C#-Quelltext
1:
dataGridViewDBLW.FirstDisplayedScrollingRowIndex = row.Index;                    


Ralf Jansen - Fr 22.03.19 14:24

Ich weiß nicht was du probiert hast und was bei dir scheitert da du den entsprechenden Code nicht zeigst.
Ich würde einfach an der Stelle wo du Selected setzt eine Zelle dieser Row als die aktuelle Zelle setzen.
Damit zwingst du das Grid diese Zelle in den sichtbaren Bereich zu scrollen (so wie es gerade am günstigsten ist) und die Row/die Zelle ist nicht nur selektiert sondern auch fokussiert.
Was man vermutlich in diesem Kontext auch will.


edvazubi - Fr 22.03.19 14:34


C#-Quelltext
1:
dataGridViewDBLW.FirstDisplayedScrollingRowIndex = row.Index;                    

vor dem break zu setzen hat funktioniert. Dankeschön.

Moderiert von user profile iconTh69: C#-Tags hinzugefügt