我想在按下删除键时清除选定的行(由 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
发布的代码似乎使用了错误的行索引。在所选行的
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
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Delete)
{
if (dataGridView1.CurrentRow != null)
{
dataGridView1.Rows.Remove(dataGridView1.CurrentRow);
}
}
}