Thank you Mike Hankey for the good link, inheriting DataGridViewCell and DataGridViewColumn is OK but it is not simple enough and I chose another solution which only adds some lines of code to the CellPainting handler of the datagridView, here is the code I tried, it works perfectly:
private void HS_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (HS.Columns[e.ColumnIndex].CellTemplate.GetType() == typeof(DataGridViewCheckBoxCell)&&e.RowIndex > -1)
{
e.Handled = true;
string s = (bool)e.Value ? "Male" : "Female";
e.PaintBackground(e.CellBounds, HS.CurrentCellAddress.Y == e.RowIndex);
StringFormat sf = new StringFormat();
sf.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(s, HS.Font, new SolidBrush(HS.ForeColor), e.CellBounds,sf);
}
}
Thanks!