Domanda

Ho un listView sulla mia forma. Voglio aggiungere cose ad esso durring il programma è in esecuzione.

Questo è il codice che 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);
            }
        });
    }
}

il parametro deve essere una stringa e ho provato .ToString, ma ottengo questo:

  

Argomento '1': impossibile convertire da 'gruppo metodo' a 'stringa'

È stato utile?

Soluzione

Ti manca la parentesi della chiamata al metodo:

ToString()

Senza le parentesi, l'espressione è un metodo gruppo - cioè, un riferimento a uno o più metodi sovraccaricati.

Altri suggerimenti

Hai dimenticato le parentesi.

Si .ToString()

John questo è fuori tema, ma hai considerato con questo metodo per passare in una classe composta da ciascuna delle voci secondarie da aggiungere. Quindi:

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;}
} 

In questo modo si avrebbe bisogno di avere ognuno degli elementi nelle matrici passate in fila. Cercando di allineare gli elementi in molte matrici spesso fanno interfacce difficile da usare. Il tuo metodo sarà simile

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);
            }
        }
    }
}

Ho appena scritto questo codice di diritto in modo da là forse alcuni di pulizia codice richiesto

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top