Estoy usando DataGridView en mi aplicación WinForms. Mi objetivo principal es hacer que la tecla Enter no se mueva a la siguiente fila en la grilla. Todavía quiero la tecla Intro para validar y finalizar el modo de edición.¿Puedo hacer que DataGridView.EndEdit active el evento CellValidating?
Encontré this FAQ entry y subgrupo DataGridView para reemplazar a ProcessDialogKey(). Si la tecla presionada es Enter, invoco EndEdit(), de lo contrario, llamo a base.ProcessDialogKey().
Funciona de maravilla, excepto que el evento CellValidating no se activa.
Actualmente, estoy llamando manualmente a mi lógica de validación antes de llamar a EndEdit, pero parece que me falta algo.
Creo que podría llamar a OnCellValidating, pero me preocuparía que me pierda algún otro evento. Lo que realmente quiero es algo de EndEdit() que se comporte como presionar enter en la última fila de una grilla con la adición deshabilitada.
Sí, he visto estrategias similares, pero definitivamente se siente como un obstáculo. Aunque me gusta la idea de establecer CurrentCell en nulo. Creo que los otros ejemplos pasaron a la siguiente fila y luego regresaron. –
dice: 'operación no tuvo éxito, porque el programa no puede confirmar o salir de un cambio de valor de celda' cuando la validación falla no es una solución real – PUG
Ver [respuesta de jaminator] (http: // stackoverflow.com/a/9788083/4794) para una forma de manejar los errores de validación, aunque probablemente quiera establecer el 'ErrorText' de la fila o algo así si la validación falla. –