Winforms: ¿Cómo puedo mostrar programáticamente el último elemento en una vista de lista de C # cuando hay barras de desplazamiento verticales?

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

Pregunta

¿Cómo puedo mostrar programáticamente el último elemento en una vista de lista de C # cuando hay barras de desplazamiento verticales? He estudiado todos los métodos asociados con las vistas de lista y no puedo encontrar nada.

¿Fue útil?

Solución

En realidad no es fácil / posible desplazarse por la vista de lista. Debe indicar al elemento para asegurarse de que esté visible.

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

Otros consejos

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

ListViewItem.EnsureVisible ()

WINFORMS:

¿Intentaste establecer el valor Seleccionado en VERDADERO en el último elemento de la colección de elementos de ListView?

Creo que hacer esto se centrará en el último elemento ... desplazarse hacia abajo si es necesario. Pero no lo intenté yo mismo.

EDITAR: Esto hará el truco:

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

¿WPF o WinForms?

En WPF, obtienes el ListViewItem y llamas a BringIntoView .

Este es un enlace para usar una función de Windows para ocultar la horizontal y forzar la vertical para que se muestre en todo momento:

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

El siguiente truco seleccionará y mostrará el último elemento de ListView.
No estoy seguro de por qué esto funciona, pero funciona.

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

Además, si no desea que se muestre una barra de desplazamiento horizontal, debe cambiar el tamaño de las columnas de ListView para que se ajusten al ancho ClientArea de ListView antes de llamar a BeginInvoke .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top