在C#中,我有DataGridView和我的自定义类“Thing”,它们覆盖了toString()方法。 我想要做的就是使用Thing类型的对象填充DataGridView,因此Thing对象可以在DataGridView上自己显示它们。
public class Thing
{
public string text {get;set;}
public int id {get;set;}
public Thing(string text, id)
{
this.text = text;
this.id = id;
}
public override string ToString()
{
return text;
}
}
我正在尝试填充DataGridView,例如:
DataTable dt = new DataTable();
int Xnum = 100;
int Ynum = 100;
for (int i = 0; i < Xnum; i++)
dt.Columns.Add(i.ToString(), typeof(Thing));
for (int i = 0; i < Ynum; i++)
dt.Rows.Add();
然后
在某个循环中,我尝试在dt中填充已创建单元格的值:
//loop
(dt.Rows[x][y] as Thing).text = "some text from loop";
(dt.Rows[x][y] as Thing).id = "some id from loop";
//end loop
最后:
DataGridView1.DataSource = dt;
网格正确填充单元格和行但它们是空的。我希望他们在Thing.text字段中显示可见文本。
我需要使用自定义对象,因为我希望将来可以使用的东西很少。
那么怎么做类,所以DataGridView可以以某种方式使用它来获取每个单元格上显示的文本值?
答案 0 :(得分:0)
这有效:
for (int x = 0; x < Xnum; ++x) {
for (int y = 0; y < Ynum; ++y) {
dt.Rows[y][x] = new Thing("Cell " + x.ToString() + ", " + y.ToString(), -1);
}
}
确保使用“Things”填充表格。