WinForms: Como posso programaticamente exibir o último item em um C # listview quando há barras de rolagem verticais?
Pergunta
Como posso programaticamente exibir o último item em um C # listview quando há barras de rolagem verticais? Estudei cada método associado de listas e não consigo encontrar nada.
Solução
Na verdade não é fácil / possível rolar a exibição de lista. Você precisa dizer o item para ter certeza que é visível.
var items = listView.Items;
var last = items[items.Count-1];
last.EnsureVisible();
Outras dicas
this.listView1.Items[this.listView1.Items.Count - 1].EnsureVisible();
ListViewItem.EnsureVisible ()
winForms:
Você tentou definir o valor selecionado para TRUE no último item na coleção de itens do ListView?
Eu acho que fazendo isso irá focar o último item ... rolagem para baixo se for necesary. Mas eu did't eu tentei.
EDIT: Isto irá fazer o truque:
Me.ListView1.Items(Me.ListView1.Items.Count - 1).EnsureVisible()
WPF ou WinForms?
Em WPF, você começa a ListViewItem
e chamada BringIntoView
nele.
Este é um link para usando um Windows funcionar para esconder a horizontal e força vertical para ser mostrado em todos os momentos:
http: //social.msdn.microsoft.com/Forums/en-US/winforms/thread/4aa4dade-53a2-4e2e-a8b4-b4980da1f39c/
O seguinte truque irá tanto selecionar e mostrar o último item ListView.
Não tenho certeza por que isso funciona, mas funciona.
listview.SelectedIndices.Clear();
listview.FocusedItem = listview.Items[listview.Items.Count - 1];
listview.FocusedItem.Selected = true;
listview.BeginInvoke((MethodInvoker)delegate {
listview.FocusedItem.EnsureVisible();
});
Além disso, se você não quer uma barra de rolagem horizontal para mostrar, você precisa redimensionar colunas de ListView para ajustar a largura ClientArea
do ListView antes de chamar BeginInvoke
.