Pregunta

Tengo un listView en mi formulario.Quiero agregarle cosas mientras se ejecuta el programa.

Este es el código que uso

public void FillList(string[] Name,int[] empty,int[] Population,int[] Max,int[] Check,int size)
{
    if (this.InvokeRequired)
    {
        this.Invoke((MethodInvoker)delegate
        {
            for (int i = 0; i < size; i++)
            {
                ListViewItem item = new ListViewItem(Name[i]);

                item.SubItems.Add(empty[i].ToString); //error
                item.SubItems.Add(Population[i].ToString); //error
                item.SubItems.Add(Max[i].ToString);   //error

                if (Check != 1)
                    item.SubItems.Add("No");
                else
                    item.SubItems.Add("Yes");
                listView1.Items.Add(item);
            }
        });
    }
}

el parámetro debe ser una cadena y lo intenté .ToString, pero me sale esto:

Argumento '1':no se puede convertir de 'grupo de métodos' a 'cadena'

¿Fue útil?

Solución

Te faltan los paréntesis de la llamada al método:

ToString()

Sin los paréntesis, la expresión es un grupo método - es decir, una referencia a uno o más métodos sobrecargados.

Otros consejos

Se olvidó de los paréntesis.

Debe .ToString()

John, esto está fuera de tema, pero ¿has considerado con este método pasar una clase compuesta por cada uno de los subelementos a agregar?Entonces:

class ListItem 
{
 public string Name {get; set;}
 public int Empty {get; set;}
 public int Population {get; set;}
 public int Max {get; set;}
 public bool Checked {get; set;}
} 

De esa manera, necesitaría tener alineados cada uno de los elementos de las matrices pasadas.Intentar alinear elementos en muchas matrices a menudo dificulta el uso de las interfaces.Tu método se vería así

FillList(IList<ListItem> listItems)
{
if (this.InvokeRequired)
    {
        this.Invoke((MethodInvoker)delegate
        {
            foreach (ListItem listItem in listItems)
            {
                ListViewItem item = new ListViewItem(listItem .Name);

                item.SubItems.Add(listItem.Empty.ToString());
                item.SubItems.Add(listItem.Population.ToString());
                item.SubItems.Add(listItem.Max.ToString());

                item.SubItems.Add(listItem.Checked ? "No" : "Yes");

                listView1.Items.Add(item);
            }
        }
    }
}

Acabo de escribir este código directamente, por lo que tal vez sea necesario realizar alguna limpieza del código.

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