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

StackOverflow https://stackoverflow.com/questions/616491

Вопрос

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

Это было полезно?

Решение

На самом деле не так просто / невозможно прокрутить представление списка. Вы должны сказать элемент, чтобы убедиться, что он виден.

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

Другие советы

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

ListViewItem.EnsureVisible()

ВИНФОРМЫ:

Пробовали ли вы установить для значения «Выбрано» значение TRUE в последнем элементе коллекции Items ListView?

Я думаю, что при этом сосредоточусь на последнем пункте...прокрутите вниз, если это необходимо.Но сам я не пробовал.

РЕДАКТИРОВАТЬ:Это поможет:

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

WPF или WinForms?

В WPF вы получаете ListViewItem и вызываете BringIntoView для него.

Это ссылка на использование функции Windows для скрытия горизонтальной и принудительной вертикальной верстки, которая будет отображаться всегда:

http: //social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/

Следующий хак выберет и покажет последний элемент ListView.
Не уверен, почему это работает, но это работает.

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

Кроме того, если вы не хотите показывать горизонтальную полосу прокрутки, вам нужно изменить размер столбцов ListView, чтобы они соответствовали ширине ClientArea ListView, прежде чем вызывать BeginInvoke .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top