CheckBox in DataGridView

Submitted by: 
Visitors have accessed this post 46440 times.

In this program I will teach you on how to validate a CheckBox control before the value are change inside a DataGridView.

I have tested all the events and only DataGridView CellMouseDown can do this. The point here is to validate first if the user really want to change the value of a CheckBox to true. If not then the value of a CheckBox will revert to false.

The important code in this program is:

  1. Private Sub DataGridView1_CellMouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseDown
  2. If e.ColumnIndex = 5 Then
  3. If DataGridView1(5, e.RowIndex).Value() = False Then
  4. If MessageBox.Show("Are you sure you want to discontinue this product?", "CheckBox", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then
  5. DataGridView1(5, e.RowIndex).Value = True
  6. End If
  7. End If
  8. End If
  9. End Sub

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.


1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.


i need it very much

im a student

Very nice article. I really enjoyed it reading. And it also cleared lot of my doubts about add checkbox in datagridview I've founded another nice post on adding checkbox in datagridview using c#.Net. for more information on this post please check out this link:

Thank you

Your code got me on the right track, but didn't work quite as I wanted, so I tried dgv_MouseUp - works perfectly. I have a dgv with the 3rd column a checkbox column. I put a label on my form. When I click a checkbox the value on the label corresponds with the cell value.

Private Sub dgv_CellMouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dgvBlockModel.CellMouseUp
If e.ColumnIndex = 2 Then

If dgv.CurrentCell.Value = False Then
dgv.CurrentCell.Value = True
dgv.CurrentCell.Value = False
End If

lblValue.Text = (dgv(2, e.RowIndex).Value.ToString)

End If
End Sub

Thank you :)


Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • You may insert videos with [video:URL]
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <table> <tr> <td> <th> <img> <h1> <h2> <h3> <iframe> [video]
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <asp>, <c>, <cpp>, <csharp>, <css>, <html4strict>, <java>, <javascript>, <mysql>, <php>, <python>, <sql>, <vb>, <vbnet>. The supported tag styles are: <foo>, [foo].
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Lines and paragraphs break automatically.
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.