Winforms: come posso visualizzare a livello di programmazione l'ultimo elemento in una visualizzazione elenco C # quando sono presenti barre di scorrimento verticali?
Domanda
Come posso visualizzare a livello di codice l'ultimo elemento in una visualizzazione elenco C # quando ci sono barre di scorrimento verticali? Ho studiato tutti i metodi associati alle visualizzazioni di elenco e non riesco a trovare nulla.
Soluzione
In realtà non è facile / possibile scorrere la vista elenco. Devi dire all'articolo per assicurarti che sia visibile.
var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();
Altri suggerimenti
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();
ListViewItem.EnsureVisible ()
WinForms:
Hai provato a impostare il valore Selezionato su TRUE nell'ultimo elemento nella raccolta Articoli di ListView?
Penso che ciò si concentrerà sull'ultimo elemento ... scorrendo verso il basso se è necessario. Ma non ci ho provato.
EDIT: Questo funzionerà:
Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()
WPF o WinForms?
In WPF, si ottiene ListViewItem
e si chiama BringIntoView
su di esso.
Questo è un collegamento all'utilizzo di una funzione di Windows per nascondere l'orizzontale e forzare la visualizzazione verticale in qualsiasi momento:
http: //social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/
L'hack seguente selezionerà e mostrerà l'ultimo elemento ListView.
Non sono sicuro del perché funzioni, 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 una barra di scorrimento orizzontale, è necessario ridimensionare le colonne di ListView per adattarle alla larghezza ClientArea
di ListView prima di chiamare BeginInvoke
.