C# 如何限制datagridview创建2行?

C# 如何限制datagridview创建2行?,c#,winforms,datagridview,C#,Winforms,Datagridview,我在windows应用程序中安装了datagridview。默认情况下,datagridview加载一行。如果我们在单元格中键入某个内容,它会在该行下面创建另一行。事情是这样的。现在,如果有人键入某个内容,然后将其删除,则不会删除下面创建的行。我想阻止用户在没有任何数据的情况下创建无限数量的行。是否可以限制datagridview创建最多2个这样的空行?请建议如何执行。设置属性AllowUserTAddRows=false或通过代码 myDataGridView.AllowUserToAddRo

我在windows应用程序中安装了datagridview。默认情况下,datagridview加载一行。如果我们在单元格中键入某个内容,它会在该行下面创建另一行。事情是这样的。现在,如果有人键入某个内容,然后将其删除,则不会删除下面创建的行。我想阻止用户在没有任何数据的情况下创建无限数量的行。是否可以限制datagridview创建最多2个这样的空行?请建议如何执行。

设置属性
AllowUserTAddRows=false或通过代码

myDataGridView.AllowUserToAddRows = false;

它不能自动实现。您需要手动执行此操作。最好的方法是正确处理cellvalidating和cellvalidated事件。如果单元格为空,则取消事件。您还可以设置属性AllowUserToAddress=false并手动添加新行,例如按按钮:

                // source is IBindingSource

                MyObject newObject = this.source.AddNew();
                DataGridViewRow row = this.dgv.Rows[this.source.IndexOf(newObject)];
                row.Selected = true;

                int maxSelectedOrder = this.source.IndexOf(newObject );
                int minSelectedOrder = this.source.IndexOf(newObject );

                int displayedRows = this.dgv.Rows.GetRowCount(DataGridViewElementStates.Displayed);
                int firstDisplayed = this.dgv.FirstDisplayedScrollingRowIndex;
                int lastDisplayed = displayedRows + firstDisplayed - 1;

                if (maxSelectedOrder - 1 > lastDisplayed && minSelectedOrder - 1 > firstDisplayed)
                {
                    int firstToDisplay = displayedRows + firstDisplayed - 1 - (displayedRows - 1);

                    if (firstToDisplay > 0)
                    {
                        this.dgv.FirstDisplayedScrollingRowIndex = firstToDisplay;
                    }
                }

                this.dgv.CurrentCell = row.Cells[0];
                this.dgv.Focus();
可能重复的