【问题标题】:How to delete the row from datagridview?如何从datagridview中删除行?
【发布时间】:2012-03-19 05:42:52
【问题描述】:

朋友们,我在我的 Windows C# 应用程序中使用了 datagridview。我们知道,当加载带有 datagridview 的表单时,会在网格中创建一个默认行。如果我们在任何单元格中输入任何内容(我总共有 6 列,2 个隐藏列),就会创建一个新行。但是如果我们删除条目,新创建的行不会被删除。通过这种方式,我们可以创建任意数量的行,而无需在任何单元格中保留任何值。我希望 datagridview 最多创建 2 个这样的行,并且当在这两行中都没有值时,最后一行被删除(这样网格将有 1 行没有任何数据)。我试图删除 datagridview1_CellValueChanged 事件中的行,但它不起作用。我应该使用哪个事件以及如何获得所需的功能?请帮忙。

【问题讨论】:

  • 请同时向我们展示您尝试的代码。

标签: c# winforms datagridview


【解决方案1】:

试试这个:

DataGridView1.Rows.Remove(row);

【讨论】:

  • 你可以使用行索引或者DataGridView1.SelectedRow
  • @Sukanya 我相信“行”是一个叫做变量的东西。如果你将代码输入到这个叫做 Visual Studio 的东西中,你会发现它有一个叫做“类型”的东西与之关联,我相信它是一个 DataGridViewRow。
【解决方案2】:

我们有两个函数可以从 DataGridView 中删除行

dataGridView1.Rows.Remove();
dataGridView1.Rows.RemoveAt();

您可以提供行的索引作为参数来删除行。

您可以提供 DataGridView 的 Validating 或 Validated 事件

【讨论】:

  • 我知道我们有这两个函数,但是在什么情况下我应该使用什么行索引来删除行?
  • 当用户插入数据后要删除行时
  • 在Validating 或 Validated 中试试。
【解决方案3】:

如果您使用相同的网格 RowCount 循环,它将不起作用

  for(int i = 0;i<dataGridMaster.Rows.Count;i++)
            {
               dataGridMaster.Rows.RemoveAt(i);
            }

它不会正确地完成这项工作,因为循环时行数会发生变化。

而是将数字分配给局部变量,例如:

Int loopNum = dataGridMaster.Rows.Count;
for(int i = 0;i<loopNum ;i++)
            {
               dataGridMaster.Rows.RemoveAt(i);
            }

【讨论】:

    【解决方案4】:

    会自动添加默认行以允许用户输入。如果您不想这样做,请将 DataGridView AllowUserToAddRows 属性设置为 false。

    dataGridView.AllowUserToAddRows = false;
    

    使其成为有效的只读网格。

    【讨论】:

      猜你喜欢
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 2016-08-15
      • 1970-01-01
      相关资源
      最近更新 更多