Int de chaîne: ne peut pas convertir les « groupe de procédé » à « chaîne » [fermée]

StackOverflow https://stackoverflow.com/questions/729642

Question

J'ai un listView sur ma forme. Je veux ajouter des choses à ce durring le programme en cours d'exécution.

Voici le code que j'utilise

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

le paramètre doit être une chaîne et j'ai essayé .ToString, mais j'obtenir ceci:

  

Argument '1': ne peut pas convertir les 'groupe de procédé' à 'chaîne'

Était-ce utile?

La solution

Il vous manque les parenthèses de l'appel de méthode:

ToString()

Sans les parenthèses, l'expression est un groupe méthode - autrement dit, une référence à une ou plusieurs méthodes surchargées.

Autres conseils

Vous avez oublié les parenthèses.

Il doit être .ToString()

John cela est hors sujet, mais avez-vous pensé avec cette méthode pour passer dans une classe composée de chacun des sous-éléments à ajouter. Donc:

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 cette façon, vous devez avoir chacun des éléments dans les tableaux passés dans alignés. Essayer d'aligner les éléments dans de nombreux tableaux font souvent des interfaces difficiles à utiliser. Votre méthode ressemblerait

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

Je viens d'écrire ce code directement dans donc il peut-être un nettoyage de code requis

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top