所以我在我的项目中遇到了Datagridview的问题,所以我想我会把它归结为最基本的,并且可以从那里开始工作。似乎我只是不明白它是怎么回事,因为
DataGridViewRow row = new DataGridViewRow();
ThreadGrid.Rows.Add(row);
ThreadGrid.Rows.Add(new DataGridViewRow());
ThreadGrid.Rows.Remove(row);
导致错误“提供的行必须先取消共享”。
我找不到任何相关的“取消共享”方法或“共享”属性。我在这里错过了一些东西,还是我在问这个不可能的事情?
答案 0 :(得分:0)
关于MSDN上的行共享有一些解释:DataGridViewRow(备注部分)
DataGridView控件将共享DataGridViewRow对象 尽可能多的数据行,以避免性能损失。 除非您正在处理大量数据和体验 性能问题,通常可以忽略行共享。共享行 由Index属性值-1表示。一些成员 DataGridViewRow类不能与共享行一起使用,但可以 通过访问它来取消共享 DataGridViewRowCollection.Item 属性。行也可以不共享 在其他方面。要在不取消共享的情况下访问行,请使用 DataGridViewRowCollection.SharedRow方法。与大型合作时 大量数据,您应该知道如何共享行和 不共享以避免性能损失。有关更多信息,请参阅 扩展Windows窗体DataGridView控件的最佳实践。
因此,按索引访问行将取消共享:
ThreadGrid.Rows.Remove(ThreadGrid.Rows[0]);