13

如果我有一个 DataGridView uxChargeBackDataGridView

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

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

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

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

4

5 回答 5

15

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

Rows.Count 返回行数

于 2012-07-23T12:50:32.050 回答
11

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

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

于 2012-07-23T12:50:08.367 回答
7

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

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

所以,RowCount返回Rows.Count

于 2015-12-23T12:46:39.920 回答
1

以下语句返回相同的结果,但 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 属性中指定的行。

如果为真,则考虑默认空行。它实现了 IBindingList 接口。参考:DataGridView - AllowUserToAddRows 做什么?

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

于 2012-07-23T12:59:08.210 回答
1

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

于 2015-08-10T10:52:08.657 回答