la propiedad readonly, debes setearla antes del evento KeyUp.
me imagino que en tu evento load llenas el gridAlergias. al finalizar esta carga (con los datos que ya existen en la BD) estableces la propiedad readonly de las columnas de tu datagridview.
mira este codigo de ejemplo (usa store procedures)
Código:
primero obtengo desde la base de datos un datatable con informacion...
dttAgrupamientos = qbData.dttObtieneAgrupamientos(sCodigoEmpresa);
if (dttAgrupamientos.Rows.Count > 0)
{
dgvAgrupamientos.DataSource = dttAgrupamientos;
}
else
{
dgvAgrupamientos.DataSource = null;
dgvAgrupamientos.DataBindings.Clear();
return true;
}
// aca utilizo un databind para hacer un puente entre los datos de mi consulta, y las columnas del datagridview
BindingSource bAsociacion = new BindingSource();
bAsociacion.DataSource = dttAgrupamientos;
// aca hago el enlace entre el datagridview y el datatable
dgvAgrupamientos.AutoGenerateColumns = false;
dgvAgrupamientos.DataSource = bAsociacion;
// aca defino en tiempo de ejecucion las columnas que tendra mi datagridview (esto tb lo puedes hacer en tiempo de diseño)
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaCheckBox("Sel.", "Seleccionada"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_empresa", "dgv_CodigoEmpresa", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_centro", "dgv_CodigoCentro", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("nombre_centro", "dgv_NombreCentro", "Centro"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_zona_intesal", "dgv_CodigoZonaIntesal", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.CreateComboBoxWithEnums(dttZonasIntesal, "CodIni", "CodEqu", "Zona Intesal", "codigo_zona_Intesal"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_zona_sgs", "dgv_CodigoZonaSGS", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.CreateComboBoxWithEnums(dttZonasSGS, "LocCod", "LocDes", "Zona SGS", "codigo_zona_sgs"));
dgvAgrupamientos.Columns.Add(SGS_Utiles.dgvtbAgregaTexBox("codigo_region", "dgv_CodigoRegion", ""));
dgvAgrupamientos.Columns.Add(SGS_Utiles.CreateComboBoxWithEnums(dttRegiones, "DptCod", "DptDes", "Region", "codigo_region"));
// aca establezco las propiedades del datagridview (visible, readonly, ancho, alto, etc)
dgvAgrupamientos.Columns[0].Visible = true;
dgvAgrupamientos.Columns[1].Visible = false;
dgvAgrupamientos.Columns[2].Visible = false;
dgvAgrupamientos.Columns[3].Visible = true;
dgvAgrupamientos.Columns[4].Visible = false;
dgvAgrupamientos.Columns[5].Visible = true;
dgvAgrupamientos.Columns[6].Visible = false;
dgvAgrupamientos.Columns[7].Visible = true;
dgvAgrupamientos.Columns[8].Visible = false;
dgvAgrupamientos.Columns[9].Visible = true;
dgvAgrupamientos.Columns[0].Width = 50;
dgvAgrupamientos.Columns[3].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
dgvAgrupamientos.Columns[5].Width = 150;
dgvAgrupamientos.Columns[7].Width = 150;
dgvAgrupamientos.Columns[9].Width = 150;
dgvAgrupamientos.AllowUserToAddRows = false;
dgvAgrupamientos.ReadOnly = false;
dgvAgrupamientos.Columns[0].ReadOnly = false; // permite que se pueda seleccionar el elemento checkbox
dgvAgrupamientos.Columns[3].ReadOnly = true; // deja la columna solo con permisos de lectura
dgvAgrupamientos.Columns[5].ReadOnly = true;
dgvAgrupamientos.Columns[7].ReadOnly = true;
dgvAgrupamientos.Columns[9].ReadOnly = true;
dgvAgrupamientos.AllowUserToDeleteRows = false; // no permite que el usuario elimine filas
dgvAgrupamientos.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
todo este codigo, esta puesto en un evento que se encarga de cargar los datos que ya existen en mi BD.
despues de esto, vienen los eventos KeyUp, o cualquiera que intente en tiempo de ejecucion alterar el contenido de tu datagridview. En tu codigo, debes tener en consideracion que si quieres alterar el contenido de una celda, debes darle los permisos previamente por ejemplo programando la propiedad readonly = false en el evento que te dispara la creacion de un nuevo registro.
espero que te aclare un poco mas el tema
saludos
plch