【问题标题】:Removing last empty row of dataGridView删除 dataGridView 的最后一个空行
【发布时间】:2012-11-12 13:16:10
【问题描述】:

我有一些空的datagridview,它使用数据源是List through BindingSource。因为 AllowUserToAddRows = true,最初 datagridview 有一个空行。当我只选择这一行并关闭表单时,datagridview 会创建新的空对象。为什么会这样做?如何防止这种情况? 谢谢。

选择空行: 我明白了:

结论:经过多次尝试寻找解决方案后,我决定使用 datagridview 和两个按钮(添加行和删除行)创建 UI 控件。在这一点上,我不再尝试按计划进行,但我仍然很高兴知道解决方案。

【问题讨论】:

  • >>> 通过BindingSource 使用数据源是List。你能发布这是如何完成的吗?
  • >>> 当我只选择这一行并关闭表单时,datagridview 会创建新的空对象。每次重新打开都会创建一个新行?说第一次打开显示 2 行然后第二次显示三行等..?
  • 如果我在关闭表单中选择了“newRow”,则每次重新打开都会创建一个新行。即带星号的行。

标签: c# .net winforms datagridview


【解决方案1】:

您可以处理RowValidating 事件来验证行是否为空。如果是这样,那么取消事件和行将不会被添加。

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

【讨论】:

  • 我正在尝试处理此事件,但它会暂停表单并且不允许任何操作,除了关闭表单。
【解决方案2】:

我建议确保您没有在 RowLeaveCellLeave 等事件处理程序中增加 RowCount 属性的值。

例如:

DataGridView1.RowCount += 1;

【讨论】:

  • 不,我不会以编程方式增加 rowCount。
  • “EditMode”属性映射了什么?您能讨论一下您为 datagridview 处理的任何事件吗?
  • 你更新你的绑定源吗?如果是,那么在哪里?确保不绑定源不会使用新行进行更新。更新前设置AllowUserToAddRows=false
【解决方案3】:

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

要禁用它,您还需要阻止用户添加新行。通过将 DataGridView 控件的 AllowUserToAddRows 属性设置为 False 来做到这一点:

myDataGridView.AllowUserToAddRows = false;

【讨论】:

    【解决方案4】:

    尝试在 FormClosing 事件处理程序中显式清除 DataSource。

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

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

    【讨论】:

      【解决方案5】:

      您可以在此处禁用“启用添加”

      【讨论】:

        猜你喜欢
        • 2014-02-05
        • 1970-01-01
        • 1970-01-01
        • 2013-12-19
        • 2010-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多