2010-08-27 20 views
5

Tengo una pequeña aplicación WinForms de C# 3.5 en la que estoy trabajando que toma los nombres de registro de eventos de un servidor en una vista de lista. Cuando se selecciona uno de esos elementos, se completa otra vista de lista con las entradas del registro de eventos del registro de eventos seleccionado utilizando el evento SelectedIndexChanged al tomar la propiedad de texto del primer elemento en la colección SelectedItems como se muestra a continuación.ListView SelectedIndexChanged Evento no Problemas de elementos seleccionados

string logToGet = listView1.SelectedItems[0].Text; 

Esto funciona bien la primera vez, pero una segunda selección de un nombre de registro de eventos de la primera vista de lista falla. Lo que está sucediendo es que la colección SelectedItems que obtiene el evento SelectedIndexChanged está vacía, así que obtengo una ArgumentOutOfRangeException.

Estoy perdido. ¿Alguna idea sobre lo que estoy haciendo mal o una mejor manera de hacer esto?

Respuesta

12

Sí, la razón es que cuando selecciona otro elemento, ListView anula la selección del elemento seleccionado antes de seleccionar el nuevo elemento, por lo que el recuento pasará de 1 a 0 y luego a 1 nuevamente. Una forma de solucionarlo sería comprobar que la colección SelectedItems contiene un elemento antes de intentarlo y utilizarlo. La forma en que lo está haciendo está bien, sólo tiene que tener esto en cuenta

por ejemplo

if (listView1.SelectedItems.Count == 1) 
{ 
    string logToGet = listView1.SelectedItems[0].Text; 
} 
1

Debe comprobar que la colección SelectedItems tiene valores en ella antes de intentar recuperar los valores de la misma.

Algo así como:

if(listView1.SelectedItems.Count > 0) 
    //Do your stuff here 
0

Cuando se selecciona un nuevo elemento, el elemento anterior está seleccionada en primer lugar. Envuelva su código en una comprobación rápida:

if(listView1.SelectedItems.Count > 0) 
{ 
string logToGet = listView1.SelectedItems[0].Text; 
} 

Esto ignorará los elementos seleccionados que cambian a ningún elemento seleccionado.

Cuestiones relacionadas