Подтвердить что ты не робот

Winforms: Как я могу программно отображать последний элемент в списке С# при наличии вертикальных полос прокрутки?

Как я могу программно отображать последний элемент в списке С# при наличии вертикальных полос прокрутки? Я изучил каждый метод, связанный с listviews, и ничего не нашел.

4b9b3361

Ответ 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 на нем.

Ответ 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.