Selezione di una riga in DataGridView a livello di codice


109

Come posso selezionare un particolare intervallo di righe in modo DataGridViewprogrammatico in fase di esecuzione?

Risposte:


127

Non testato, ma penso che tu possa fare quanto segue:

dataGrid.Rows[index].Selected = true;

oppure potresti fare quanto segue (ma ancora: non testato):

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

Fai attenzione se il tuo DataGridView è read-only- allora SelectedRows.Clear()non funzionerà.
Derek W

14
Invece di SelectedRows.Clear () usa il metodo ClearSelection () dell'istanza datagridview
Furkan

1
@ Furkan: questo non fa la stessa cosa. Con SelectedRows.Clear()solo le righe selezionate vengono cancellate, ma ClearSelection()anche con le colonne => le selezioni di colonna vengono perse ...
Christoph Fink

17
aggiungi una riga di codicedataGrid.CurrentCell = dataGrid.Rows[row.Index].Cells[0];
Timeless

2
@Timeless: l'evento SelectionChanged non sembra essere attivato durante il test del tuo suggerimento.
user2430797

34

In Visual Basic, eseguire questa operazione per selezionare una riga in un DataGridView; la riga selezionata apparirà con un colore evidenziato ma si noti che la posizione del cursore non cambierà:

Grid.Rows(0).Selected = True

Fai questo cambiare la posizione del cursore:

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

La combinazione delle righe sopra posizionerà il cursore e selezionerà una riga. Questa è la procedura standard per la messa a fuoco e la selezione di una riga in a DataGridView:

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

Grid.Rows (0) .Cells (0) è molto utile in caso di dati della griglia più lunghi dell'area di visualizzazione della griglia. L'ordine di cui sopra non è necessario, puoi scorrere il codice per la selezione di righe / celle [fonte: testato personalmente].
BiLaL

Come spostare la griglia nella posizione selezionata? La riga è selezionata ma la posizione della griglia non è sulla riga selezionata. Lo scorrimento manuale mostra la riga selezionata. Come forzare lo scorrimento della griglia?
FrenkyB

Guarda che: 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. Cancella tutta la selezione precedente.
  2. Fai scorrere le righe che devono essere selezionate nella griglia.
  3. Ottieni le maniglie di riga dalla griglia (nota che qui la griglia è già aggiornata con nuove righe)
  4. Verifica se l'handle di riga è valido o meno.
  5. Quando la maniglia di riga è valida, selezionala.

Dove itemList è un elenco di righe da selezionare nella visualizzazione griglia.




-1

Quando si imposta una riga Selected di un DataGridView al momento del caricamento, valutare la possibilità di gestirla nell'evento DataBindingComplete, poiché può essere sovrascritto per impostazione predefinita.


-1

Prova questo:

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

Spero che questo aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.