索引超出范围,但我知道其中有列

时间:2019-05-26 22:50:33

标签: c# datagridview

编辑:找到了不使用动态创建表的解决方法。

我正在使用C#中的DataGridView动态创建表。我正在尝试将列0设置为AutoSizeMode,但是出现索引超出范围的错误。但是,无需尝试使用代码访问列,我的所有数据都可以正确显示在单元格中,应该显示为两列。

我尝试关闭AutoGenerateColumns,但是后来我没有任何数据。

DataGridView mainTable = new DataGridView();
DataTable table = new DataTable();
table.Columns.Add("A");
table.Columns.Add("B");

// ... skipping the part where I populate the data in the table, I know the entire data is truly there...

mainTable.DataSource = table;
mainTable.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

1 个答案:

答案 0 :(得分:0)

我相信代码行的原因……

mainTable.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

失败是因为DataGridView mainTable尚未添加到表单中。

DataGridView添加到表单之前发出的任何UI命令都将被忽略。

在尝试更改其列之前,将DataGridView添加到表单应该可以正常工作。将网格添加到表单时,发布的代码不显示。

DataGridView mainTable = new DataGridView();
DataTable table = new DataTable();
table.Columns.Add("A");
table.Columns.Add("B");
// ... skipping the part where I populate the data in the table, I know the entire data is truly there...
mainTable.DataSource = table;
this.Controls.Add(mainTable); // <- UI commands not ignored
mainTable.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;