Int a corda: não podem converter de 'grupo método' para 'cadeia' [fechado]
Pergunta
Eu tenho um ListView no meu formulário. Eu quero adicionar coisas a ele Posteriormente o programa está em execução.
Este é o uso de código I
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);
}
});
}
}
o parâmetro deve ser uma string e eu tentei .ToString
, mas fico com esta:
O argumento '1': não é possível converter de 'grupo de método' to 'string'
Solução
Está faltando dos parênteses a chamada de método:
ToString()
Sem os parênteses, a expressão é um método grupo - isto é, uma referência a um ou mais métodos sobrecarregados.
Outras dicas
Você esqueceu os parênteses.
Deve ser .ToString()
John este é off topic, mas você já pensou com este método para passar em uma classe composta de cada um dos sub-itens para adicionar. Assim:
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;}
}
Dessa forma, você precisaria ter cada um dos itens nas matrizes passaram em fila. Tentando alinhar itens em muitas matrizes muitas vezes fazem interfaces de difícil utilização. Seu método seria parecido
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 escrever este código em linha reta para que haja talvez uma limpeza código necessário