Programmgesteuertes Auswählen einer Zeile in DataGridView


Antworten:


125

Nicht getestet, aber ich denke, Sie können Folgendes tun:

dataGrid.Rows[index].Selected = true;

oder Sie könnten Folgendes tun (aber noch einmal: nicht getestet):

dataGrid.SelectedRows.Clear();
foreach(DataGridViewRow row in dataGrid.Rows)
{
    if(YOUR CONDITION)
       row.Selected = true;
}

Passen Sie auf, ob Ihr DataGridView ist read-only- dann SelectedRows.Clear()funktioniert es nicht.
Derek W

14
Verwenden Sie anstelle von SelectedRows.Clear () die ClearSelection () -Methode der Datagridview-Instanz
Furkan,

1
@ Furkan: Das macht nicht das Gleiche. Mit SelectedRows.Clear()nur die ausgewählten Zeilen gelöscht, aber mit ClearSelection()auch den Spalten => Spaltenauswahlen verloren ...
Christoph Fink

17
dataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: Das SelectionChanged-Ereignis scheint beim Testen Ihres Vorschlags nicht ausgelöst zu werden.
user2430797

33

Führen Sie dies in Visual Basic aus, um eine Zeile in a auszuwählen DataGridView. Die ausgewählte Zeile wird mit einer hervorgehobenen Farbe angezeigt. Beachten Sie jedoch, dass sich die Cursorposition nicht ändert:

Grid.Rows(0).Selected = True

Ändern Sie dazu die Position des Cursors:

Grid.CurrentCell = Grid.Rows(0).Cells(0)

Durch Kombinieren der obigen Zeilen wird der Cursor positioniert und eine Zeile ausgewählt. Dies ist das Standardverfahren zum Fokussieren und Auswählen einer Zeile in a DataGridView:

Grid.CurrentCell = Grid.Rows(0).Cells(0)
Grid.Rows(0).Selected = True

Grid.Rows (0) .Cells (0) ist sehr nützlich, wenn Grid-Daten länger als der Rasteranzeigebereich sind. Die oben genannte Reihenfolge ist nicht erforderlich. Sie können den Code für die Zeilen- / Zellenauswahl durchwischen [Quelle: Persönlich getestet].
BiLaL

Wie verschiebe ich das Gitter an die ausgewählte Position? Zeile ist ausgewählt, aber die Rasterposition befindet sich nicht in der ausgewählten Zeile. Manuelles Scrollen zeigt die ausgewählte Zeile. Wie erzwinge ich das Scrollen zum Scrollen?
FrenkyB

Siehe das: FirstDisplayedScrollingRowIndex
Rodrigo T.

12
DataGridView.Rows
    .OfType<DataGridViewRow>()
     .Where(x => (int)x.Cells["Id"].Value == pId)
     .ToArray<DataGridViewRow>()[0]
     .Selected = true;

0
 <GridViewName>.ClearSelection(); ----------------------------------------------------1
 foreach(var item in itemList) -------------------------------------------------------2
 {
    rowHandle =<GridViewName>.LocateByValue("UniqueProperty_Name", item.unique_id );--3
    if (rowHandle != GridControl.InvalidRowHandle)------------------------------------4
    {
        <GridViewName>.SelectRow(rowHandle);------------------------------------ -----5
    }
  }
  1. Löschen Sie alle vorherigen Auswahlen.
  2. Durchlaufen von Zeilen, die in Ihrem Raster ausgewählt werden mussten.
  3. Holen Sie sich ihre Zeilenhandles aus dem Raster (Beachten Sie, dass das Raster bereits mit neuen Zeilen aktualisiert wurde)
  4. Überprüfen, ob das Zeilenhandle gültig ist oder nicht.
  5. Wenn ein gültiges Zeilenhandle vorliegt, wählen Sie es aus.

Dabei ist itemList eine Liste der Zeilen, die in der Rasteransicht ausgewählt werden sollen.




-1

Wenn Sie zum Zeitpunkt des Ladens eine ausgewählte Zeile einer DataGridView festlegen, sollten Sie dies im DataBindingComplete-Ereignis behandeln, da diese standardmäßig überschrieben werden kann.


-1

Versuche dies:

DataGridViewRow row = dataGridView1.Rows[index row you want];
dataGridView1.CurrentRow = row;

Ich hoffe das hilft!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.