DataGridView RowCount vs Rows.Count

时间:2012-07-23 12:43:47

标签: c# winforms datagridview

如果我有DataGridView uxChargeBackDataGridView

以下语法不同但实际上是否相同?:

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

如果uxChargeBackDataGridView为空,则两者均等于1;因此逻辑上认为如果其中任何一个等于1,我可以假设用户没有输入任何数据吗?

WinFroms有一个按钮RUN - 我可以使用上面的测试来决定是否启用此按钮,即仅在number of rows is >1时启用按钮?

5 个答案:

答案 0 :(得分:15)

  

RowCount获取或设置显示的行数   的DataGridView。

     

Rows.Count返回行数

答案 1 :(得分:10)

两种说法都是一样的。但是,要记住的一件事是,只有AllowUsersToAddRow属性设置为true时,“空”datagridview才有1条记录。否则,行计数将为0。

编辑: 我想补充一点,代替MMK的答案,如果你不手动或以编程方式更改RowCount,它们将返回相同的值。见http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.rowcount.aspx

答案 2 :(得分:3)

如果您对程序集System.Windows.Forms.DataGridView进行反编译,则会看到:

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

因此,RowCount会返回Rows.Count

答案 3 :(得分:1)

以下语句返回相同的结果,但RowCount限制了DataGridView中显示的行数。

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

查看DataGridView.RowCount Property

上的注释
  

如果AllowUserToAddRows为true,则无法将RowCount设置为0.在此   case,调用DataGridViewRowCollection.Clear方法删除所有   除了新记录的行之外的行。 Calling Clear具有相同的结果   在这种情况下,将RowCount设置为1,但要快得多。

如果RowCount设置为小于当前值的值,则行将从Rows集合的末尾删除。如果RowCount设置为大于当前值的值,则行将添加到Rows集合的末尾。其他行基于RowTemplate属性中指定的行。

如果为true,则考虑默认的空行。它实现了IBindingList interface。参考:DataGridView - what does AllowUserToAddRows do?

  

如果DataGridView绑定到数据,则允许用户添加行   如果此属性和数据源IBindingList.AllowNew   属性设置为true。

答案 4 :(得分:1)

如果AllowUserToAddRows为true,则新记录的网格中将始终存在至少一行。要排除此行,请检查行对象上的属性IsNewRow。