WinForms: Wie kann ich in einer C # Listenansicht auf das letzte Element programmatisch angezeigt werden, wenn vertikale Scrollbalken sind?
Frage
Wie kann ich programmatisch auf das letzte Element in einer C # Listenansicht angezeigt werden, wenn es vertikale Scrollbalken? Ich habe jede Methode untersucht mit Listviews zugeordnet und kann nichts finden.
Lösung
Es ist nicht wirklich einfach / möglich, die Listenansicht zu blättern. Sie müssen den Punkt sagen, um sicherzustellen, dass es ist sichtbar.
var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();
Andere Tipps
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();
ListViewItem.EnsureVisible ()
WINFORMS:
Haben Sie versucht, den ausgewählten Wert auf TRUE in dem letzten Elemente in der Items-Auflistung der Listview-Einstellung?
Ich denke, dass dies zu tun auf dem letzten Punkt konzentrieren ... Scrollen nach unten, wenn es necesary ist. Aber ich did't mich tryed.
EDIT: Das wird den Trick tun:
Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()
WPF oder WinForms?
In WPF, erhalten Sie die ListViewItem
und rufen BringIntoView
auf sie.
Dies ist ein Link, um eine Windows-Funktion zur Verwendung der horizontalen und vertikalen Kraft zu verstecken jederzeit angezeigt werden:
http: //social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/
Die folgenden Hack sowohl wählen und das letzte Listview-Element zeigen.
Nicht sicher, warum dies funktioniert, aber es funktioniert.
listview.SelectedIndices.Clear();
listview.FocusedItem = listview.Items[listview.Items.Count - 1];
listview.FocusedItem.Selected = true;
listview.BeginInvoke((MethodInvoker)delegate {
listview.FocusedItem.EnsureVisible();
});
Auch wenn Sie nicht zeigen eine horizontale Bildlaufleiste wollen, müssen Sie Listview-Spalten, um die Größe der Listenansicht des ClientArea
Breite passen vor BeginInvoke
aufrufen.