2009-04-08 8 views
12

J'ai une listeAfficher sur mon formulaire. Je veux ajouter des choses en cours d'exécution le programme est en cours d'exécution.Int to string: impossible de convertir 'groupe de méthodes' en 'chaîne'

C'est 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 je reçois ceci:

Argument '1': ne peut pas convertir 'groupe méthode' à 'string'

+0

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. J'ai ajouté des détails dans une réponse ci-dessous – Jiminy

Répondre

57

Vous manquez les parenthèses:

ToString()

8

Vous avez oublié les parenthèses.

Il devrait être .ToString()

0

John cela est hors sujet mais vous avez examiné 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 auriez besoin d'avoir chacun des éléments dans les tableaux passés en ligne. Essayer d'aligner des éléments dans de nombreux tableaux rend souvent les 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

Questions connexes