在 vb.net 中按下删除键时清除 datagridview 中选定的行

问题描述 投票:0回答:2

我想在按下删除键时清除选定的行(由 datagridcomboboxcell 和 textboxcell 组成)。以下代码不起作用。

     Private Sub dgvCanaraBankCAU_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgvCanaraBankCAU.KeyDown
    If e.KeyCode = Keys.Delete Then
        Dim i As Integer = 0
        For Each row As DataGridViewRow In dgvCanaraBankCAU.SelectedRows
            dgvCanaraBankCAU.Rows(i).Cells(0).Value = ""
            dgvCanaraBankCAU.Rows(i).Cells(1).Value = ""
            dgvCanaraBankCAU.Rows(i).Cells(2).Value = ""
            dgvCanaraBankCAU.Rows(i).Cells(3).Value = ""
            dgvCanaraBankCAU.Rows(i).Cells(4).Value = ""
            dgvCanaraBankCAU.Rows(i).Cells(5).Value = ""
            dgvCanaraBankCAU.Rows(i).Cells(6).Value = ""
        Next
    End If
End Sub
vb.net datagridview
2个回答
0
投票

发布的代码似乎使用了错误的行索引。在所选行的

For Each
循环中,
Row
索引为
i
并且其值永远不会从零开始变化。该代码将始终清除零行 (0)。该索引的以下更改似乎按预期工作。

Private Sub dgvCanaraBankCAU_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles dgvCanaraBankCAU.KeyDown
  If e.KeyCode = Keys.Delete Then
    For Each row As DataGridViewRow In dgvCanaraBankCAU.SelectedRows
      dgvCanaraBankCAU.Rows(row.Index).Cells(0).Value = ""
      dgvCanaraBankCAU.Rows(row.Index).Cells(1).Value = ""
      dgvCanaraBankCAU.Rows(row.Index).Cells(2).Value = ""
      dgvCanaraBankCAU.Rows(row.Index).Cells(3).Value = ""
      dgvCanaraBankCAU.Rows(row.Index).Cells(4).Value = ""
      dgvCanaraBankCAU.Rows(row.Index).Cells(5).Value = ""
      dgvCanaraBankCAU.Rows(row.Index).Cells(6).Value = ""
    Next
  End If
End Sub

0
投票
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Delete)
            {

                if (dataGridView1.CurrentRow != null)
                {
                    dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
                }
            }
       }
© www.soinside.com 2019 - 2024. All rights reserved.