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。