Pregunta

En un control ListView , el foco está en algún Item dentro de ese control, es decir, el control mantiene su propia noción interna de lo que está enfocado, que puede ser recuperado usando la propiedad FocusedItem .

Me gustaría que los elementos no estén enfocados. En otras palabras, quiero que la propiedad FocusedItem se establezca en null . ¿Alguna idea de cómo podría lograr esto?

¿Fue útil?

Solución

Para ampliar la respuesta de Vanuan:

if (listView1.FocusedItem != null)
{
    listView1.FocusedItem.Focused = false;
}

Algo me dice que también quieres deseleccionar el elemento. Entonces, probablemente también quieras hacer esto:

if (listView1.SelectedItems.Count != 0)
{
    listView1.SelectedItems[0].Selected = false;
}

Otros consejos

Creo que es

listView1.FocusedItem.Focused=false;

Asegúrese de que listView1.FocusedItem no sea nulo.

(Gracias a brianpeiris por expandir)

Cuando se agregan nuevos elementos a un control de vista de lista, dibuja un cuadro de puntos alrededor de los elementos. Hay algunas situaciones en las que no quieres esta señal visual. Basta con tener los elementos seleccionados resaltados es suficiente. Esta es una forma de evitar que se muestre el cuadro de puntos al agregar nuevos elementos a un control de vista de lista.

ListViewItem item = new ListViewItem();
myListView.Items.Add(item);
myListView.SelectedItems.Clear();
myListView.FocusedItem = null;
myListView.Refresh();

ACTUALIZACIÓN:
Mi solución no soluciona el problema. Desearía que hubiera una forma sencilla de " desenfoque " un control pero después de googlear durante varias horas no pude encontrar ninguno. Yo también estaba buscando una manera de evitar que esas líneas punteadas se muestren. Cuando hago clic en un botón para agregar elementos de vista de lista, no hay problema. Es solo cuando presiono Entrar después de presionar un botón (recibir enfoque de entrada) aparece esto.

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