c# - item - ¿Cómo seleccionar un elemento en un ListView programmatically?
listview selected item (7)
Intento seleccionar el primer elemento en un ListView mediante programación, pero no parece haber sido seleccionado. Estoy usando el siguiente código:
if (listView1.Items.Count > 0)
listView1.Items[0].Selected = true;
En realidad, he tenido este problema antes, pero no recuerdo cómo logré resolverlo.
¡Creo que el problema y la solución fueron descriptos por Cody Gray! Tengo una nota adicional.
Por favor, compruebe el foco del elemento de vista de lista especificado (y el control!). Podría establecer el foco y la selección con las siguientes líneas de código:
this.listView1.Items[1].Selected = true;
this.listView1.Items[1].Focused = true;
¡Pero el control concentrado era una condición!
Lo más probable es que el artículo esté siendo seleccionado, simplemente no puede decirlo porque un control diferente tiene el foco. Hay un par de maneras diferentes en que puede resolver esto, dependiendo del diseño de su aplicación.
La solución simple es establecer el foco en
ListView
primero cada vez que se muestre su formulario. El usuario generalmente establece el foco en los controles haciendo clic en ellos. Sin embargo, también puede especificar qué controles obtiene el foco mediante programación. Una forma de hacerlo es establecer el índice de pestañas del control en 0 (el valor más bajo indica el control que tendrá el foco inicial). Una segunda posibilidad es usar la siguiente línea de código en el eventoLoad
su formulario o inmediatamente después de establecer la propiedadSelected
:myListView.Select();
El problema con esta solución es que el elemento seleccionado ya no aparecerá resaltado cuando el usuario establezca el foco en un control diferente en su formulario (como un cuadro de texto o un botón).
Para solucionarlo, deberá establecer la propiedad
HideSelection
del controlListView
en False. Eso hará que el elemento seleccionado permanezca resaltado , incluso cuando el control pierda el foco.Cuando el control tiene el foco, el fondo del elemento seleccionado se pintará con el color de resaltado del sistema. Cuando el control no tiene el foco, el fondo del elemento seleccionado se pintará en el color del sistema utilizado para el texto en gris (o desactivado).
Puede establecer esta propiedad en tiempo de diseño o mediante código:
myListView.HideSelection = false;
Sé que esta es una vieja pregunta, pero creo que esta es la respuesta definitiva.
listViewRamos.Items[i].Focused = true;
listViewRamos.Items[i].Selected = true;
listViewRemos.Items[i].EnsureVisible();
Si existe la posibilidad de que el control no tenga el foco pero quiera forzar el enfoque hacia el control, entonces puede agregar la siguiente línea.
listViewRamos.Select();
Por qué Microsoft no acaba de agregar un método SelectItem()
que hace todo esto por usted está más allá de mí.
int i=99;//is what row you want to select and focus
listViewRamos.FocusedItem = listViewRamos.Items[0];
listViewRamos.Items[i].Selected = true;
listViewRamos.Select();
listViewRamos.EnsureVisible(i);//This is the trick
ListViewItem.IsSelected = true;
ListViewItem.Focus();
if (listView1.Items.Count > 0)
{
listView1.FocusedItem = listView1.Items[0];
listView1.Items[0].Selected = true;
listView1.Select();
}
if (listView1.Items.Count > 0)
{
listView1.Items[0].Selected = true;
listView1.Select();
}
los elementos de la lista no aparecen seleccionados a menos que el control tenga el foco (o usted establece la propiedad HideSelection
en falso)