2017-03-21 12 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 
関連する問題