2012-07-23 71 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