Crie um método responsável por instanciar um novo DataGridViewImageColumn.


//Método que cria o texto da coluna e insere a imagem na coluna
private void CriaButtonNoGrid(DataGridViewImageColumn, _nome, string _text,string _headerText, string _image)
{
_nome = new DataGridViewImageColumn();
_nome.Name = _text;
_nome.HeaderText = _headerText;
DataGridView1.columns.Add(_nome) //Aqui você coloca o nome do seu dataGrid, e cria a(s) coluna(s)
}
//Crie o método click do GridView manualmente
private void DataGridView1.CellClickExclui(object sender, DataGridViewCellEventArgs e)
{
try
{
//Colocar aqui o numero da coluna que você criou, estes métodos que passo aqui criam as ultimas colunas
if(e.ColumnIndex == ? )
{
//no nosso exemplo aqui chamo um método para exclusão de registro
}
else if(e.columnIndex == ?)
{
//Aqui levo os dados no datagrid para edição nos seus respectivos campos
}
}
catch (Exception ex)
{
messageBox.Show("Ocorreu um erro: " + ex.message,"Alerta",MessageBoxButtons.Ok,MessageBoxIcon.Information);
}
}
//Após criados os dois métodos , Crie um método para carregar seu dataGrid com os dados do banco

private void carregaGrid()
{
DataGridView1.Columns.Clear();//Limpa as colunas do Grid, senão poderia recriar as colunas constantemente
try
{
DataGridView1.Datasource = ();//*Seu código Sql para prencher o data Grid*
//Eu costumo utilizar uma classe para acesso a dados, nessa classe construo um método para listar meus dados

//Crie a instancia da nova coluna

var excluir = new DataGridViewImageColumn();
var editar = new DataGridViewImageColumn();
//Chame o método criado anteriormente respnsável por criar as colunas no GRID

//Parametros são: nome da coluna,cabeçalho da coluna, caminho da imagem;
CellClickExclui(editar,"Editar","Caminho da sua imagem editar");
CellClickExclui(excluir,"Excluir","Camonho da sua imagem excluir");
//Sempre que você carregar seu dataGrid com esse método ele irá criar esses butons nas ultimas colunas.

}

catch (Exception ex)
{
messageBox.Show("Ocorreu um erro: " + ex.message,"Alerta",MessageBoxButtons.Ok,MessageBoxIcon.Information);
}
//Agora por ultima inclua no Load do seu formulária o evetHandler do click, dessa forma

private void Form1_Load(object sender, eventArgs e)
{

DataGridView1.CellClick += new DataGridViewCellEventHandler(dgwAplicativos_CellClickExclui);
}