2009-03-05 13 views

risposta

11

In realtà non è facile/possibile scorrere la visualizzazione elenco. Devi dire l'oggetto per assicurarti che sia visibile.

var items = listView.Items; 
var last = items[items.Count-1]; 
last.EnsureVisible(); 
+0

Questo codice funziona, ma una barra orizzontale appare e la nasconde sul mio dispositivo CE (a causa delle dimensioni limitate). Qualsiasi modo per barra di scorrimento orizzontale diable? – Auburnate

+0

È necessario tenere conto della larghezza della barra di scorrimento verticale. Le tue colonne non dovrebbero utilizzare tutta la larghezza del tuo ListView ... salva un po 'la barra di scorrimento verticale. – Romias

0

WPF o WinForms?

In WPF, si ottiene il ListViewItem e si chiama BringIntoView su di esso.

1

WinForms:

Forse si tenta di impostare il valore selezionato su TRUE nel l'ultimo elemento della collezione Items del ListView?

Penso che fare questo si concentrerà sull'ultimo elemento ... scorrendo verso il basso se necessario. Ma non ci ho provato.

EDIT: Questo farà il trucco:

Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible() 
+0

Impostava lo stato attivo ma non lo scorrimento automatico. Altre idee? – Auburnate

1

ListViewItem.EnsureVisible()

6
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible(); 
0

Il seguente hack sia selezionare e mostra l'ultimo oggetto listview. Non sono sicuro del motivo per cui funziona, ma funziona.

listview.SelectedIndices.Clear();
listview.FocusedItem = listview.Items [listview.Items.Count - 1];
listview.FocusedItem.Selected = true;
listview.BeginInvoke ((MethodInvoker) delegate {listview.FocusedItem.EnsureVisible();});

Inoltre, se non si desidera visualizzare la barra di scorrimento orizzontale, è necessario ridimensionare le colonne listview per adattarle alla larghezza ClientArea della listview prima di chiamare BeginInvoke.