C# 如何使用列表填充列表框<;字符串>;数据

C# 如何使用列表填充列表框<;字符串>;数据,c#,winforms,C#,Winforms,我有一个名为listBox2的列表框,我正在尝试填充它。 “ProSailor”是一个类,末尾的三个数字是来自该类的值 我需要将这些值添加到listBox2 public string[] listBoxBoard = new string[10]; List<string> _scoreboard = new List<string>(); ProSailor sailor1 = new ProSailor(1, 24, 7); ProSailo

我有一个名为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);
我只得到两个错误,它们是:

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

  • 参数1:无法从“SailingEvent.ProSailor”转换为“string”

  • 我也尝试过:

    _scoreboard.Add(listBoxBoard[0]);
    

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

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

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

    得到类型不匹配的原因是,您已将列表初始化为
    list
    ,然后尝试将
    ProSailor
    类型对象添加到列表中。如果Sealer有一些字符串属性,您可以尝试以下操作:

    假设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();
    
    List seallist=(新ProSailor[]
    {
    新ProSailor(1,24,7),
    新ProSailor(2,23,14),
    新ProSailor(3,20,5)
    }).ToList();
    List stringList=seallist.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() };
        }
    }
    
    现在,您可以使用以下代码填充列表:

    listBox2.DataSource = _scoreboard;
    

    传递listboxboard不会做任何事情,因为您从未给它赋值。您使用的是字符串泛型列表,而不是ProSailer类型。若要实现这一点,必须在ProSailor类中重写ToString(),或者必须创建如下列表:list _scoreBoard=newlist();我在代码中没有看到任何对listBox2.add的调用,调用此函数的代码在哪里?您应该能够在列表框中添加并查看类型名称
    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;