我已按如下方式设置DataGridViewColumnCollection
:
private DataGridViewColumnCollection columns;
private void RemoveStaffFromList(object sender, EventArgs e)
{
columns = dataGridViewStaff.Columns;
MessageBox.Show(columns.Count.ToString());
dataGridViewStaff.DataSource = null;
MessageBox.Show(columns.Count.ToString());
}
MessageBox 1返回“4”,MessageBox 2返回“0”,因此当我使DataSource无效时,columns
显然会重置。但为什么?不应将columns
视为与dataGridViewStaff
分开的变量,因此不受数据源更改的影响吗?
答案 0 :(得分:1)
因为您的columns
变量只是指向与dataGridViewStaff.Columns
相同的内存位置所以当您将数据源设置为null
时,columns
变为空,因此为0.
答案 1 :(得分:0)
不要忘记为DataGridView.AutoGenerateColumns
指定false获取或设置一个值,该值指示是否创建列 设置DataSource或DataMember属性时自动执行。
当此属性设置为true并且设置或更改DataSource或DataMember属性时,将自动生成列。