2013-11-23 46 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方法返回索引 –

相關問題