سلام
ابتدا کد زیر رو رویداد فرم لود بنویسین
DataGridViewButtonColumn btn = new DataGridViewButtonColumn();dataGridView1.Columns.A  dd(btn);
btn.HeaderText = "Click Data";
btn.Text = "Click Here";
btn.Name = "btn";
btn.UseColumnTextForButtonValue = true;

و بعد این کد رو هم توی رویداد CellClick دیتاگرید بنویسین
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)        {
if (e.ColumnIndex == 3)
{
MessageBox.Show((e.RowIndex + 1) + " Row " + (e.ColumnIndex + 1) + " Column button clicked ");
}

}

و سپس این کد ها رو هم در یه باتن بنویسین
private void button1_Click(object sender, EventArgs e)        {
dataGridView1.ColumnCount = 3;
dataGridView1.Columns[0].Name = "Product ID";
dataGridView1.Columns[1].Name = "Product Name";
dataGridView1.Columns[2].Name = "Product Price";


string[] row = new string[] { "1", "Product 1", "1000" };
dataGridView1.Rows.Add(row);
row = new string[] { "2", "Product 2", "2000" };
dataGridView1.Rows.Add(row);
row = new string[] { "3", "Product 3", "3000" };
dataGridView1.Rows.Add(row);
row = new string[] { "4", "Product 4", "4000" };
dataGridView1.Rows.Add(row);


DataGridViewButtonColumn btn = new DataGridViewButtonColumn();
dataGridView1.Columns.Add(btn);
btn.HeaderText = "Click Data";
btn.Text = "Click Here";
btn.Name = "btn";
btn.UseColumnTextForButtonValue = true;

}

با سپاس Spaceman