8

生徒の年齢、GPA、および名前を含む arrStudents 配列があります。

arrStudents[0].Age = "8"
arrStudents[0].GPA = "3.5"
arrStudents[0].Name = "Bob"

次のように arrStudents を DataGridView にバインドしようとしました。

dataGridView1.DataSource = arrStudents;

しかし、配列の内容はコントロールに表示されません。何か不足していますか?

4

2 に答える 2

10

Adolfo と同様に、これが機能することを確認しました。表示されているコードには何も問題がないため、表示されていないコードに問題があるはずです。

私の推測: Ageetc はパブリック プロパティではありません。であるか、フィールドであるinternalかのいずれかです。public int Age;public int Age {get;set;}

適切に型指定された配列と匿名型の配列の両方で機能するコードは次のとおりです。

using System;
using System.Linq;
using System.Windows.Forms;
public class Student
{
    public int Age { get; set; }
    public double GPA { get; set; }
    public string Name { get; set; }
}

internal class Program
{
    [STAThread]
    public static void Main() {
        Application.EnableVisualStyles();
        using(var grid = new DataGridView { Dock = DockStyle.Fill})
        using(var form = new Form { Controls = {grid}}) {
            // typed
            var arrStudents = new[] {
                new Student{ Age = 1, GPA = 2, Name = "abc"},
                new Student{ Age = 3, GPA = 4, Name = "def"},
                new Student{ Age = 5, GPA = 6, Name = "ghi"},
            };
            form.Text = "Typed Array";
            grid.DataSource = arrStudents;
            form.ShowDialog();

            // anon-type
            var anonTypeArr = arrStudents.Select(
                x => new {x.Age, x.GPA, x.Name}).ToArray();
            grid.DataSource = anonTypeArr;
            form.Text = "Anonymous Type Array";
            form.ShowDialog();
        }
    }
}
于 2012-09-07T18:40:39.767 に答える
10

これは私のために働く:

public class Student
{
    public int Age { get; set; }
    public double GPA { get; set; }
    public string Name { get; set; }
}

public Form1()
{
        InitializeComponent();

        Student[] arrStudents = new Student[1];
        arrStudents[0] = new Student();
        arrStudents[0].Age = 8;
        arrStudents[0].GPA = 3.5;
        arrStudents[0].Name = "Bob";

        dataGridView1.DataSource = arrStudents;
}

以下の冗長性:

arrStudents[0] = new Student {Age = 8, GPA = 3.5, Name = "Bob"};

List<Student>配列はおそらく大きくなる必要があるため、配列の代わりにa も使用します。

それはあなたもやっていることですか?

ここに画像の説明を入力

于 2012-09-07T18:44:55.080 に答える