2009-07-20 20 views
7

Come domanda simile a this question, ho anche un'applicazione con un DataGridView su di esso. Vorrei posizionare le righe in modo tale che una riga specifica si trovi nella parte inferiore della parte visibile dell'elenco.Come posizionare un DataGridView su una riga specifica (in modo che la riga selezionata sia in basso)?

Ciò è in risposta a un clic del pulsante che sposta una riga in basso di uno. Voglio mantenere la selezione sulla riga che mi sto muovendo (ho già questa parte funzionante). Se ci sono molte righe, la riga selezionata potrebbe spostarsi sotto l'area visibile. Voglio scorrere verso il basso finché non si trova nella parte inferiore dell'area visibile.

Non sembra essere un compagno LastDisplayedScrollingRowIndex a FirstDisplayedScrollingRowIndex.

Qualche idea? Grazie.

risposta

9

Come supposizione personale, penso di dover utilizzare FirstDisplayedScrollingRowIndex e il numero di righe visibili in DataGridView per calcolare il nuovo FirstDisplayedScrollingRowIndex. Forse ho solo bisogno di scoprire cosa viene chiamata la proprietà NumberOfVisibleRows?

Trovato. DisplayedRowCount:

if (dataGridView.FirstDisplayedScrollingRowIndex + dataGridView.DisplayedRowCount(false) <= selectedRowIndex) 
{ 
    dataGridView.FirstDisplayedScrollingRowIndex = 
     selectedRowIndex - dataGridView.DisplayedRowCount(false) + 1; 
} 

Codice testato e funzionante nel mio progetto.

5

Il metodo DisplayedRowCount indica il numero di righe visualizzate sullo schermo. Impostare il valore del parametro su true per includere righe parziali.

var displayedRows = myDataGridView.DisplayedRowCount(false); 
+0

Grazie. Ottieni un upvote (anche se l'ho trovato da solo prima di vedere la tua risposta) ma imposterò la mia risposta come accettata poiché ha un campione di codice funzionante. –

+0

Stavo per elaborare la mia risposta ma ho visto che hai trovato la soluzione da solo subito dopo aver postato questo ;-) –

Problemi correlati