2013-11-23 34 views
1

所以我一直在我的项目中遇到Datagridview的问题,所以我认为我会把它归结为最基本的东西,并从那里开始工作。看来我只是不明白发生了什么,因为如何取消共享Datagridviewrow

DataGridViewRow row = new DataGridViewRow(); 
ThreadGrid.Rows.Add(row); 
ThreadGrid.Rows.Add(new DataGridViewRow()); 
ThreadGrid.Rows.Remove(row); 

导致错误“提供的行必须先取消共享”。

我找不到任何相关的“Unshare”方法或“共享”属性。我在这里错过了什么,还是我问不可能?

回答

0

大约有MSDN上的行共享一些解释:DataGridViewRow(备注部分)

DataGridView控件将分享跨 多行数据的DataGridViewRow对象尽可能避免性能下降。 除非您正在处理大量数据并遇到性能问题,否则通常可以忽略行共享。索引属性值为-1表示共享行 。 DataGridViewRow类的某些成员不能与共享行一起使用,但可以通过 DataGridViewRowCollection.Item属性访问它来取消共享行。行也可以以其他方式取消共享 。要访问一行而不取消共享,请使用DataGridViewRowCollection.SharedRow方法。在处理大量数据时,您应该了解如何共享行,以及如何共享 以避免性能损失。有关更多信息,请参阅 缩放Windows窗体DataGridView控件的最佳做法。

因此,通过其索引访问行会取消共享它:

ThreadGrid.Rows.Remove(ThreadGrid.Rows[0]); 
+0

好了,假设我不知道该行的索引。 IndexOf()返回-1,导致引发另一个异常。 – user2085282

+0

@ user2085282,但你这样做:Add方法返回索引 –

相关问题