C# DataGridViewColumnCollection因未知原因重置
我已经设置了一个C# DataGridViewColumnCollection因未知原因重置,c#,winforms,C#,Winforms,我已经设置了一个DataGridViewColumnCollection,如下所示: private DataGridViewColumnCollection columns; private void RemoveStaffFromList(object sender, EventArgs e) { columns = dataGridViewStaff.Columns; MessageBox.Show(columns.Count.ToStri
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”,因此当我清空数据源时,
columns
显然会重置。但是为什么呢?columns
不应该被视为一个独立于dataGridViewStaff
的变量,因此不受数据源更改的影响吗?因为您的columns
变量只指向与dataGridViewStaff.columns
相同的内存位置,所以当您将数据源设置为null
时列
变为空,因此为0 不要忘记将false指定给
获取或设置一个值,该值指示是否创建列
设置数据源或数据成员属性时自动执行
当此属性设置为true并且设置或更改了DataSource或DataMember属性时,将自动生成列。Nope。使用数据源时,数据以及列和类型都来自该数据源。不确定您正在使用
DataGridViewColumnCollection
做什么,但看起来您正在从两个不同的东西打印列计数。那么,有没有办法强制它将值存储在单独的内存位置?@PeterWritesCode,我想这会很麻烦,您需要创建一个全新的DataGridView
var columns=newdatagridviewcolumncollection(newdatagridview())然后逐个复制列,但老实说,我强烈建议不要这样做,因为DataGridView
没有内置这种克隆方法是有原因的。