Según los requisitos de diseño, el editor de cuadrícula de datos no puede ser editado directamente por el usuario. Está en modo de solo lectura. Cuando el usuario hace doble clic en la celda, la propiedad de solo lectura de datagridview se vuelve falsa y la celda acepta la entrada del teclado. Sin embargo, la entrada de teclado sin formato debe formatearse antes de entrar en la celda. Por lo tanto, interceptar los eventos KeyPress de la siguiente manera:El valor de celda Datagridview no se actualizó cuando se modificó dinámicamente
private void dgw_keyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
En este punto, la celda está en modo de extracto y el modo sucio. Luego actualizo la propiedad Value en un método diferente y llamo al dgw.Refresh()
, que se supone que muestra el valor actualizado en la celda. Pero no lo hará. se actualizará solo cuando la celda actual no esté sucia y no esté en modo de edición. ¿Cómo puedo forzar que la celda muestre el valor actualizado mientras todavía está en modo de edición?
¿Alguna idea?
InvalidateCell()? – Dmitry
No está muy claro qué es lo que quiere lograr, cómo está capturando el evento 'keypress' y luego modificando la entrada y asignándola a la grilla. Por favor, publique todo el código relevante, esto no da ninguna idea de qué causa el problema. – V4Vendetta
Probé InvalidateCell() UpdateCellValue() y Refresh() en el control datagridview sin suerte. Estoy interceptando e ignorando los eventos clave del control. En cambio, tengo un gancho de teclado que registra las pulsaciones de teclas. Tomo los eventos clave capturados por el gancho del teclado, modifico los valores y los visualizo en la celda DGW. – Thracian