Int в строку:не удается преобразовать из 'группы методов' в 'строку' [закрыто]
Вопрос
У меня есть ListView в моей форме.Я хочу добавлять к нему что-то во время работы программы.
Это код, который я использую
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);
}
});
}
}
параметр должен быть строковым, и я попробовал .ToString
, но я понимаю это:
Аргумент '1':не удается преобразовать из 'группы методов' в 'строку'
Решение
Вам не хватает круглых скобок при вызове метода:
ToString()
Без круглых скобок выражение представляет собой группа методов — то есть ссылка на один или несколько перегруженных методов.
Другие советы
Вы забыли про круглые скобки.
Это должно быть .ToString()
Джон, это не по теме, но рассматривали ли вы возможность с помощью этого метода передать класс, состоящий из каждого из добавляемых подпунктов.Итак:
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;}
}
Таким образом, вам нужно было бы выстроить в ряд каждый из передаваемых элементов в массивах.Попытка выстроить элементы в ряд во многих массивах часто затрудняет использование интерфейсов.Ваш метод будет выглядеть следующим образом
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);
}
}
}
}
Я только что написал этот код прямо, так что, возможно, потребуется некоторая очистка кода