我正在尝试将匿名类型列表绑定到DataGridView,但Columns和Rows似乎是空的。
[TestMethod]
public void TestMethod1()
{
var view = new DataGridView() { DataSource = new[] { new { Foo = 1, Bar = "2" } }};
Assert.AreEqual(2, view.Columns.Count); // fail, count = 0
Assert.AreEqual(1, view.Rows.Count); // fail, count = 0
}
在匿名类型绑定后,我找不到很多关于访问列和行的资源。为什么会这样一个竞争的任何想法?
编辑:
将父级设置为模拟表单,然后转到:
[TestMethod]
public void TestMethod1()
{
var view = new DataGridView() { Parent = new Form() , DataSource = new[] { new { Foo = 1, Bar = "2" } }};
Assert.AreEqual(2, view.Columns.Count); // win
Assert.AreEqual(1, view.Rows.Count); // win
}
答案 0 :(得分:1)
尝试在TestMethod1
事件处理程序中调用Load
:
private void Form1_Load(object sender, EventArgs e){
TestMethod1();
}
还记得您的网格没有任何父级,所以如何呈现它?所以尝试为它分配一些父:
var view = new DataGridView(){Parent = this};
//...
原因是您的DataGridView
在加载UI之前不会在开头呈现。