перед привязкой к набору источников данных:
grd.AutoGenerateColumns = false;
создайте все столбцы DataGridView и привяжите их к источнику данных:
DataGridViewTextBoxColumn dgvc = new DataGridViewTextBoxColumn();
dgvc.HeaderText = "column_header";
dgvc.DataPropertyName = "column_name";
создать DataGridViewButtonColumn.
DataGridViewButtonColumn dgvbt = new DataGridViewButtonColumn();
Если вы хотите, чтобы этот столбец не был связан, установите текст заголовка, тот же текст на всех кнопках:
dgvbt.HeaderText = "OK?";
dgvbt.Text = "ok"; // works also when bound
dgvbt.UseColumnTextForButtonValue = true; //
Если вы хотите, чтобы ваш столбец также был ограничен, а каждая кнопка имела текст основной ячейки, свяжите его:
dgvbt.DataPropertyName = "column_bt";
Добавить созданные столбцы в DataGridView:
grd.Columns.Add(dgvc);
grd.Columns.Add(dgvbt);
обрабатывать событие CellClick объекта DataGridView:
grd.CellClick += new DataGridViewCellEventHandler(grd_CellClick);
void grd_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == index_of_button_column)
{
MessageBox.Show(this, e.RowIndex.ToString() + " Clicked!");
//...
}
}
Подробнее см .:
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewbuttoncolumn.aspx