Winforms:Как я могу программно отобразить последний элемент в списке С#, когда есть вертикальные полосы прокрутки?
Вопрос
Как я могу программно отобразить последний элемент в списке С#, когда есть вертикальные полосы прокрутки?Я изучил все методы, связанные со списками, и ничего не нашел.
Решение
На самом деле не так просто / невозможно прокрутить представление списка. Вы должны сказать элемент, чтобы убедиться, что он виден. Р>
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
. р>