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'

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top