我有一个名为listBox2的列表框,我正在尝试填充。 “ProSailor”是一个类,最后的三个数字是来自所述类的值。
我需要将这些值添加到listBox2。
public string[] listBoxBoard = new string[10];
List<string> _scoreboard = new List<string>();
ProSailor sailor1 = new ProSailor(1, 24, 7);
ProSailor sailor2 = new ProSailor(2, 23, 14);
ProSailor sailor3 = new ProSailor(3, 20, 5);
但是,如果我试试这个:
_scoreboard.Add(sailor1);
我只得到两个错误:
最佳重载方法匹配 'System.Collections.Generic.List.Add(string)'有一些 无效的参数
参数1:无法从'SailingEvent.ProSailor'转换为'string'
我也尝试过:
_scoreboard.Add(listBoxBoard[0]);
这不会返回任何错误,但不会填充列表框。
答案 0 :(得分:1)
在ProSailer
课程中,您会覆盖ToString()
功能,以便列表框知道要显示的内容。将ProSailor
的集合添加到Listbox
,因为它将项目添加为包含类对象的对象。
public override string ToString()
{
return "your string to display";
}
答案 1 :(得分:1)
您遇到类型不匹配的原因是您已将列表初始化为List<string>
,然后尝试将ProSailor
类型对象添加到列表中。如果水手有一些字符串属性,你可以尝试以下方法:
说ProSailor看起来像这样:
class ProSailor
{
public string MyStringProperty { get; set; }
public ProSailor(int a, int b, int c)
{
}
}
然后完成你正在做的事情:
List<ProSailor> sailorList = (new ProSailor[]
{
new ProSailor(1, 24, 7),
new ProSailor(2, 23, 14),
new ProSailor(3, 20, 5)
}).ToList();
List<string> stringList = sailorList.Select(s => s.MyStringProperty).ToList();
答案 2 :(得分:0)
如果你的课程看起来像这样:
class ProSailor
{
public ProSailor(int num1, int num2, int num3)
{
Num1 = num1;
Num2 = num2;
Num3 = num3;
}
public int Num1 { get; set; }
public int Num2 { get; set; }
public int Num3 { get; set; }
}
并且您希望获得带有值的字符串列表,您应该创建新方法来获取此列表:
class ProSailor
{
public ProSailor(int num1, int num2, int num3)
{
Num1 = num1;
Num2 = num2;
Num3 = num3;
}
public int Num1 { get; set; }
public int Num2 { get; set; }
public int Num3 { get; set; }
public List<string> GetAllValues()
{
return new List<string> { Num1.ToString(), Num2.ToString(), Num3.ToString() };
}
}
现在,如果你想创建一个字符串列表并组合来自少数对象的值,你可以使用AddRange
methond:
List<string> _scoreboard = new List<string>();
ProSailor sailor1 = new ProSailor(1, 24, 7);
ProSailor sailor2 = new ProSailor(2, 23, 14);
ProSailor sailor3 = new ProSailor(3, 20, 5);
_scoreboard.AddRange(sailor1.GetAllValues());
_scoreboard.AddRange(sailor2.GetAllValues());
_scoreboard.AddRange(sailor3.GetAllValues());
现在,您可以使用以下代码填充列表:
listBox2.DataSource = _scoreboard;