Как я могу программно отображать последний элемент в списке С# при наличии вертикальных полос прокрутки? Я изучил каждый метод, связанный с listviews, и ничего не нашел.
Winforms: Как я могу программно отображать последний элемент в списке С# при наличии вертикальных полос прокрутки?
Ответ 1
На самом деле нелегко/возможно прокрутить список. Вам нужно указать элемент, чтобы убедиться, что он виден.
var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();
Ответ 2
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();
Ответ 3
WINFORMS:
Вы пытались установить значение Selected в значение TRUE в последнем элементе в коллекции Items ListView?
Я думаю, что это будет сфокусировано на последнем элементе... прокрутка вниз, если это необходимо. Но я не пробовал себя.
EDIT: Это сделает трюк:
Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()
Ответ 4
ListViewItem.EnsureVisible()
Ответ 5
WPF или WinForms?
В WPF вы получаете ListViewItem
и вызываете BringIntoView
на нем.
Ответ 6
Это ссылка на использование функции windows для скрытия горизонтальной и вертикальной силы, которая будет отображаться в любое время:
http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/
Ответ 7
Следующий хак как выберет, так и покажет последний элемент ListView.
Не уверен, почему это работает, но это работает.
listview.SelectedIndices.Clear();
listview.FocusedItem = listview.Items[listview.Items.Count - 1];
listview.FocusedItem.Selected = true;
listview.BeginInvoke((MethodInvoker)delegate {
listview.FocusedItem.EnsureVisible();
});
Кроме того, если вы не хотите показывать горизонтальную полосу прокрутки, вам нужно изменить размер столбцов ListView, чтобы они соответствовали ширине ListView ClientArea
прежде чем вызывать BeginInvoke
.