DataGridViewCheckBoxColumn chbx_Column = new DataGridViewCheckBoxColumn();
chbx_Column.Name = "chk_column";
chbx_Column.HeaderText = "";
chbx_Column.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
dataGridView1.Columns.Add(chbx_Column);
//Select cell where checkbox to be display
Rectangle rect = this.dataGridView1.GetCellDisplayRectangle(0, -1, true); //0 Column index -1(header row) is row index
//Mention size of the checkbox
chkbox.Size = new Size(18, 18);
//set position of header checkbox where to places
rect.Offset(40, 2);
chkbox.Location = rect.Location;
chkbox.CheckedChanged += chkBoxChange;
//Add CheckBox control to datagridView
this.dataGridView1.Controls.Add(chkbox);
// for adding combo box in header
Rectangle rect = this.dataGridView1.GetCellDisplayRectangle(0, -1, true); //0 Column index -1(header row) is row index
ComboBox c = new ComboBox();
c.BackColor = Color.FromArgb(246, 246, 246);
c.Size = new Size(100,15);
rect.Offset(0, 0);
c.Location = rect.Location;
this.dataGridView1.Controls.Add(c);
Step 2: For individual row ,write event code. This is just to uncheck the checked row and check the unchecked row
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if( Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["chk_column"].Value)== true)
{
dataGridView1.Rows[e.RowIndex].Cells["chk_column"].Value =false;
}
else {
dataGridView1.Rows[e.RowIndex].Cells["chk_column"].Value = true;
}
}
{
if( Convert.ToBoolean(dataGridView1.Rows[e.RowIndex].Cells["chk_column"].Value)== true)
{
dataGridView1.Rows[e.RowIndex].Cells["chk_column"].Value =false;
}
else {
dataGridView1.Rows[e.RowIndex].Cells["chk_column"].Value = true;
}
}