C# 删除dataGridView的最后一个空行

C# 删除dataGridView的最后一个空行,c#,.net,winforms,datagridview,C#,.net,Winforms,Datagridview,我有一些空datagridview,它通过BindingSource使用数据源列表。由于AllowUserToAddress=true,最初datagridview有一个空行。当我选择这一行并关闭表单时,datagridview会创建新的空对象。为什么会这样?如何预防? 谢谢 选择空行: 我明白了: 结论:在多次尝试寻找解决方案后,我决定使用datagridview和两个按钮AddRow和DeleteRow创建UI控件。此时,我停止了按计划执行的操作,但我仍然很高兴知道解决方案。您可以处理Ro

我有一些空datagridview,它通过BindingSource使用数据源列表。由于AllowUserToAddress=true,最初datagridview有一个空行。当我选择这一行并关闭表单时,datagridview会创建新的空对象。为什么会这样?如何预防? 谢谢

选择空行: 我明白了:

结论:在多次尝试寻找解决方案后,我决定使用datagridview和两个按钮AddRow和DeleteRow创建UI控件。此时,我停止了按计划执行的操作,但我仍然很高兴知道解决方案。

您可以处理RowValidating事件来验证行是否为空。如果是,则不会添加取消事件和行

if (gridView[0, e.RowIndex].Value == null)
    e.Cancel = true;
您可以处理RowValidating事件以验证行是否为空。如果是,则不会添加取消事件和行

if (gridView[0, e.RowIndex].Value == null)
    e.Cancel = true;

我建议您确保在诸如RowLeave、CellLeave等事件处理程序中不增加RowCount属性的值

例如:

DataGridView1.RowCount += 1;

我建议您确保在诸如RowLeave、CellLeave等事件处理程序中不增加RowCount属性的值

例如:

DataGridView1.RowCount += 1;

尝试在FormClosing事件处理程序中显式清除数据源

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    dataGridView1.DataSource = null;
}

保留在内存中的绑定可能会导致此问题。

请尝试在FormClosing事件处理程序中显式清除数据源

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    dataGridView1.DataSource = null;
}

保留在内存中的绑定可能会导致此问题。

是的,DataGridView底部总是有一个空行。它允许用户在运行时添加新数据;他们所要做的就是开始在新行中输入

要禁用它,还需要防止用户添加新行。为此,请将DataGridView控件的AllowUserToAddress属性设置为False:


myDataGridView.AllowUserToAddress=false

是的,DataGridView的底部总是有一个空行。它允许用户在运行时添加新数据;他们所要做的就是开始在新行中输入

要禁用它,还需要防止用户添加新行。为此,请将DataGridView控件的AllowUserToAddress属性设置为False:

myDataGridView.AllowUserToAddress=false

您可以在此处禁用已启用的添加功能


您可以在此处禁用已启用的添加功能

我正在尝试处理此事件,但它挂起窗体,不允许任何操作(关闭窗体除外)。我正在尝试处理此事件,但它挂起窗体,不允许任何操作(关闭窗体除外)。不,我不会以编程方式增加行数。使用“EditMode”属性映射的是什么?您能讨论一下您为datagridview处理的任何事件吗?您是否更新了绑定源?如果是,那么在哪里?确保不绑定源不使用新行获取更新。在更新集AllowUserToAddress=falseNo之前,我不会以编程方式增加行数。使用“EditMode”属性映射的是什么?您能讨论一下您为datagridview处理的任何事件吗?您是否更新了绑定源?如果是,那么在哪里?确保不绑定源不使用新行获取更新。更新前,设置AllowUserToAddress=false>>>使用数据源是通过BindingSource列出的。您可以发布这是如何完成的吗?>>>当我选择这一行并关闭表单时,datagridview会创建新的空对象。每次重新打开都会创建新行吗?假设第一次打开显示两行,然后第二次显示三行等等?如果我在关闭窗体中选择了新行,每次重新打开都会创建一个新行。即,带星号的行。>>>使用的数据源是通过BindingSource列出的。您可以发布这是如何完成的吗?>>>当我选择这一行并关闭表单时,datagridview会创建新的空对象。每次重新打开都会创建新行吗?假设第一次打开显示两行,然后第二次显示三行等等?如果我在关闭窗体中选择了新行,每次重新打开都会创建一个新行。即,带星号的行。