我有一个DataGridView,我试图从DataTable填充 . 列很好,但行中的数据很杂乱 . 第一个值是正确的,但其余的是错误的,我不知道为什么 .

public partial class Winnings : Form
{
    public DataTable table = new DataTable();

我有来自另一种形式的列表,因此是contrsuctor中的参数 . 这些列表包含每只狗的1个值(姓名,年龄等) .

public Winnings(List<string> names, List<string> ages, List<string> firsts, List<string> seconds, List<string> thirds)
    {
        InitializeComponent();

        table.Columns.Add("Name");
        table.Columns.Add("Age");
        table.Columns.Add("First");
        table.Columns.Add("Second");
        table.Columns.Add("Third");

        Dog[] dogs = new Dog[names.Count];

我从5个列表中创建了每只狗

for (int i = 0; i < names.Count; i++)
        {
            Dog dog = new Dog(names[i], ages[i], firsts[i], seconds[i], thirds[i]);

然后将每只狗添加到包含Dogs的数组中 .

dogs[i] = dog;
        }

然后试着用狗填充行 . 名称显示为corecctly但所有其他值都是错误的 .

foreach (Dog dog in dogs)
        {
            table.Rows.Add(dog.Name, dog.Age, dog.First, dog.Second, dog.Third);
        }

        dgvWinnings.DataSource = null;
        dgvWinnings.DataSource = table;
        dgvWinnings.AutoGenerateColumns = false;
        dgvWinnings.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
     }

这是我的狗课

public class Dog
    {
        private string name;
        private string age;
        private string first;
        private string second;
        private string third;

        public string Name { get => name; set => name = value; }
        public string Age { get => age; set => age = value; }
        public string First { get => first; set => first = value; }
        public string Second { get => second; set => second = value; }
        public string Third { get => third; set => third = value; }

        public Dog(string name, string age, string first, string second, string third)
        {
            this.name = name;
            this.age = age;
            this.first = first;
            this.second = second;
            this.third = third;
        }
    }

我在循环线上设置了断点并跟踪了狗的每个值,它们是正确的,但DataGridView只是显示错误的数据 .

Winnings DataGridView

我试图像这样手动填充行:

table.Rows.Add("Elzumin", "7", "0", "7", "2");

但它仍然显示在图片中 .

我有每个数组的文本文件 .