Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将匿名列表绑定到DataGridView的数据源时没有列_C#_Winforms_Datagridview_Datasource_Anonymous Types - Fatal编程技术网

C# 将匿名列表绑定到DataGridView的数据源时没有列

C# 将匿名列表绑定到DataGridView的数据源时没有列,c#,winforms,datagridview,datasource,anonymous-types,C#,Winforms,Datagridview,Datasource,Anonymous Types,我试图将匿名类型的列表绑定到DataGridView,但列和行似乎为空 [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

我试图将匿名类型的列表绑定到DataGridView,但列和行似乎为空

[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
}

尝试在
Load
事件处理程序中调用
TestMethod1

private void Form1_Load(object sender, EventArgs e){
   TestMethod1();
}
还要记住,网格没有任何父对象,因此如何渲染它?因此,请尝试为其分配一些父对象:

var view = new DataGridView(){Parent = this};
//...

原因是在加载UI之前,
DataGridView
在一开始就没有呈现。

如果我在表单中添加DataGridView,这就是工作。但我不需要或不想将DataGridView添加到表单中。是什么使列和行列表被设置的?@CyrilGandon正如我所说的,如果它没有父对象,它不会被渲染,并且只有当网格有父对象时,列和行才会被渲染。如果不渲染这些列和行,则这些列和行没有任何信息。如果不想显示网格/表格,则应使用一些
DataTable
。在没有显示的情况下为网格设置一些数据是没有意义的。哇,这就是重点<代码>变量视图=新DataGridView(){Parent=新表单()}工作!