2011-09-21 10 views
5

estoy añadiendo elementos a una vista de lista (C# WinForms app) a través del siguiente código:¿Por qué evento listview fuego que indica que elemento seleccionado no está marcada después de añadir

var IT = new ListViewItem(Term); 
IT.Checked = true; 
MyListView.Items.Add(IT); 

Sin embargo, inmediatamente después de agregar el elemento de recibo un evento que indica que el elemento no está marcado (e.Item.Checked es falso).

Luego recibo un evento posterior que indica que está marcado (e.Item.Checked es verdadero).

¿Por qué estoy recibiendo el primer evento? ¿La propiedad marcada se configura como falsa por algún motivo cuando agrego el elemento a la lista? Parece extraño dado que estoy configurando el estado verificado en verdadero antes de agregarlo a mi evento.

Cualquier ayuda muy apreciada. Gracias por adelantado.

+1

¿Cómo se registraron sus eventos? – thekip

+0

para ayudarte necesitamos ver esos controladores de eventos, qué contienen y cómo los vincula a la vista de lista. –

+0

Asociando un controlador de eventos con el evento 'ItemChecked' en Visual Studio. – Richard

Respuesta

12

Parece que cuando CheckBox de cada ListViewItem se agrega al ListView, se establece inicialmente como no seleccionado que activa el evento ItemChecked.

En su caso, el CheckBox se establece como marcado para que coincida con IT.Checked = true; que dispara el evento nuevamente.

Esto parece ser por diseño y no creo que haya un método para evitar que estos eventos se disparen al cargarse.

Una alternativa (aunque un poco de un truco) sería comprobar la propiedad FocusedItem de ListView, ya que es nula hasta que se carga el ListView y conserva una referencia a un ListItem después.

void listView1_ItemChecked(object sender, ItemCheckedEventArgs e) 
{ 
    if (listView1.FocusedItem != null) 
    { 
     //Do something 
    } 
} 

Espero que esto ayude.

+0

Muchas gracias. Tienes razón. Mirando la pila de llamadas, puedo ver que la propiedad marcada realmente se está regresando a falso y luego a verdadero nuevamente después de agregar el artículo. De hecho, estoy un poco sorprendido de que vuelva a ser cierto, pero, sin embargo, este parece ser el comportamiento. – Richard

Cuestiones relacionadas