2012-07-23 32 views
12

如果我有一個DataGridView uxChargeBackDataGridViewDataGridView RowCount vs Rows.Count

有以下語法不同,但實際上是相同的?:

int numRows = uxChargeBackDataGridView.Rows.Count; 
int numRowCount = uxChargeBackDataGridView.RowCount; 

如果uxChargeBackDataGridView爲空,則兩者都等於1;這是否邏輯上認爲,如果其中任何一個等於1,我可以假設用戶沒有輸入任何數據?

該WinFroms有一個按鈕RUN - 我可以使用上述測試來決定是否啓用這個按鈕,即只有啓用按鈕時number of rows is >1

回答

11

兩種說法都一樣。但是,需要記住的一件事是,僅當AllowUsersToAddRow屬性設置爲true時,「空的」datagridview纔有1個記錄。否則,行數將爲0.

編輯: 我想添加,代替MMK的答案,即如果您不改變RowCount,無論是手動或編程方式,他們將返回相同的值。請參閱http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowcount.aspx

+0

這種形式的整點是接受用戶輸入的變量量(不是你可以從OP得知),所以我懷疑'AllowUsersToAddRow = false'並不是真的可能性 – whytheq 2012-07-23 13:07:47

13

RowCount獲取或設置顯示在 DataGridView中的行數。

Rows.Count返回

+1

+1 short and to point – whytheq 2013-04-20 14:39:07

1

下面的語句是返回相同的結果,但行數限制在DataGridView中顯示的行數行數..

int numRows = uxChargeBackDataGridView.Rows.Count; 
int numRowCount = uxChargeBackDataGridView.RowCount; 

檢查下面的註釋上DataGridView.RowCount Property

如果AllowUserToAddRows爲true,則不能將RowCount設置爲0.在此 的情況下,調用DataGridViewRowCollection.Clear方法刪除除新行記錄以外的所有行 行。在這種情況下調用清除具有與將RowCount設置爲1相同的結果 ,但速度要快得多。

如果將RowCount設置爲小於當前值的值,則將從行集合的末尾刪除行。如果將RowCount設置爲大於當前值的值,則行將被添加到Rows集合的末尾。其他行基於RowTemplate屬性中指定的行。

如果它是真的,則會考慮默認的空行。它實現了IBindingList interface。參考文獻:DataGridView - what does AllowUserToAddRows do?

如果在DataGridView綁定到數據,允許用戶添加行 如果此屬性和數據源的IBindingList.AllowNew 屬性設置爲true。

1

如果AllowUserToAddRows爲true,則至少有一行將始終出現在新記錄的網格中。要排除此行,請檢查行對象上的屬性IsNewRow。

1

如果反編譯程序集System.Windows.Forms.DataGridView,您將看到:

public int RowCount 
     { 
      get 
      { 
       return this.Rows.Count; 
      } 

所以,RowCount回報Rows.Count