Try handling CurrentCellKeyPress, and set e.Handled = true for any e.KeyChar that you do not want the cell to get.
private void gridControl1_CurrentCellKeyPress(object sender, KeyPressEventArgs e)
{
GridCurrentCell cc = this.gridControl1.CurrentCell;
//restrict col 2 to numbers
if(cc.ColIndex == 2 && !char.IsDigit(e.KeyChar)
&& e.KeyChar != ’.’ && && e.KeyChar != ’-’)
e.Handled = true; //ignore it
}