DataGridViewColumnCollection由于未知原因重置

时间:2018-03-18 21:15:55

标签: c# winforms

我已按如下方式设置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分开的变量,因此不受数据源更改的影响吗?

2 个答案:

答案 0 :(得分:1)

因为您的columns变量只是指向与dataGridViewStaff.Columns相同的内存位置所以当您将数据源设置为null时,columns变为空,因此为0.

答案 1 :(得分:0)

不要忘记为DataGridView.AutoGenerateColumns

指定false
  

获取或设置一个值,该值指示是否创建列   设置DataSource或DataMember属性时自动执行。

当此属性设置为true并且设置或更改DataSource或DataMember属性时,将自动生成列。