Ciao
il problema è che l'evento datagrid.keydown non si verifica quando viene premuto un tasto mentre la cella sta venendo modificata. Ti consiglio per risolvere il tuo problema di intercettare l'evento datagrid.CellEndEdit (che si verifica qundo viene disattivata la modalità di modifica per la cella selezionata) e inserire qui il codice per sostituire la virgola al punto:
private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
DataGridViewCell cell = dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex];
cell.Value = cell.Value.ToString().Replace('.', ',');
}
Luca