我在SO上看到了很多关于列的奇怪行为及其可见性的帖子,特别是在刷新网格和动态构建列表中的列时,但还没有找到令人满意的解决方案。
经过一番挖掘,我几乎可以肯定这个问题是由于使用了该DataGridView.Columns.Clear()
方法。
到目前为止,我还没有弄清楚为什么,但是当我动态构建我的 DataGridView 列时删除 Clear() 方法会阻止隐藏列的出现,但我不明白为什么这会产生任何影响?当然,如果您清除 Columns 集合并用于DataGridView.Columns.Add()
开始添加新的集合,代码如下;
dataGridView1.Columns.Clear(); // This is the offending method!!
dataGridView1.AutoGenerateColumns = false;
dataGridView1.ShowEditingIcon = false;
dataGridView1.RowHeadersVisible = false;
DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn();
col.DataPropertyName = "ID";
col.HeaderText = "ID";
col.Visible = false; // Notice the visibility of this column...
dataGridView1.Columns.Add(col);
... // Code is repeated for other columns in the collection
我看不出有什么问题,但如果dataGridView1.Columns.Clear();
包含在开头,我的隐藏列变得可见,这肯定是一个错误吗?