2017-03-21 66 views
0

當按下刪除鍵時,我想清除選定行(由datagridcomboboxcell和textboxcell組成)。以下代碼無法使用。當在vb.net中按下刪除鍵時在datagridview中清除選定的行

 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 
+0

您是否收到錯誤?如果是這樣,有什麼錯誤?而不是將每個單元格分配給''「''。但看看[這個答案,它回答你需要做什麼](http://stackoverflow.com/questions/20200315/delete-a-row-in-datagridview-control-in-vb-net)。 –

+0

沒有錯誤。實際上,當按下刪除按鈕時,控制器不會轉到該功能 – user3422209

+0

啊,@ user3422209,嘗試將表單的「KeyPreview」設置爲「True」 - 並記住我以前的建議。 –

回答

0

看來發布的代碼使用錯誤的行索引。在所選行的For Each循環中,索引是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