Int a cadena:no se puede convertir de 'grupo de métodos' a 'cadena' [cerrado]
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'
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.