繁体   English   中英

如何使用List填充列表框 <string> 数据

[英]How do I populate a listbox with List<string> data

我有一个名为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);

我刚刚得到两个错误:

  1. 'System.Collections.Generic.List.Add(string)'的最佳重载方法匹配具有一些无效参数

  2. 参数1:无法从'SailingEvent.ProSailor'转换为'string'

我也尝试过:

_scoreboard.Add(listBoxBoard[0]);

这不会返回任何错误,但不会填充列表框。

ProSailer类中,您重写ToString()函数,以便Listbox知道要显示的内容。 ProSailor集合添加到Listbox因为它将项目添加为包含类对象的对象。

 public override string ToString()
  {
   return "your string to display";
  }

您遇到类型不匹配的原因是您已将列表初始化为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();

如果你的班级看起来像这样:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM