DataGridView RowCount vs Rows.Count

如果我有一个DataGridView uxChargeBackDataGridView

以下语法是否有所不同但有效相同?:

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

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

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

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

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

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

Rows.Count返回行数

如果您反编译程序集System.Windows.Forms.DataGridView ,您将看到:

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

因此, RowCount返回Rows.Count

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

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

请查看DataGridView.RowCount属性下面的注释

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

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

如果为true,则考虑默认的空行。 它实现了IBindingList接口 。 Ref: DataGridView – AllowUserToAddRows做了什么?

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

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