quisiera saber si es posible capturar el evento de cancelación de edición de
una fila en un datagrid, es decir cuando estas editando las celdas de una
fila si le das a escape limpia la fila entera cancelando su edición.
¡Muchas gracias!
Hola, Mikel:
En el evento «EditingControlShowing» del control DataGridView, tienes que
detectar el control DataGridViewTextBoxEditingControl que actualmente se
está editando en la celda activa. Para ello, a nivel del formulario declara
la siguiente variable objeto con eventos:
Private WithEvents cellTextBox As DataGridViewTextBoxEditingControl
Ahora, instala el controlador de evento «KeyPress»:
Private Sub cellTextBox_KeyPress( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles cellTextBox.KeyPress
' Si se ha pulsado la tecla Escape
'
If Convert.ToInt32(e.KeyChar) = 27 Then
' Cancelamos la edición de las celdas de la
' fila actual del control DataGridView.
'
Me.DataGridView1.CancelEdit()
End If
End Sub
Y el evento «EditingControlShowing» del control DataGridView, sería algo
parecido a lo siguiente:
Private Sub DataGridView1_EditingControlShowing( _
ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles DataGridView1.EditingControlShowing
' Este evento se producir cuando la celda pasa a modo de edición.
'
' Referenciamos el control DataGridViewTextBoxEditingControl actual.
'
cellTextBox = TryCast(e.Control, DataGridViewTextBoxEditingControl)
End Sub
Si deseas más información sobre el motivo para hacer todo esto, consulta el
siguiente artículo:
Cómo detectar la tecla pulsada en una celda del control DataGridView
http://mvp-access.es/softjaen/vbnet/framework/dgv/sjvbnetdgv01.htm
Un saludo
--
Enrique Martínez
[MS MVP - VB]
Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
muchísimas gracias por tu respuesta. En cuanto pruebe te comento que tal me
ha ido.
¡Un saludo!
en el evento cellTextBox_KeyPress no entra cuando pulso el evento escape y
en editingControlShowing no puedo identificar que tecla se ha pulsado.
¿Alguna idea?
Muchas gracias
Sí, que no lo estarás haciendo tal cual lo he explicado. :-)
Para descartar que no se deba a temas extraños, inicia un nuevo proyecto,
rellena el control DataGridView y limítate a seguir los pasos que te he
indicado en mi anterior mensaje. Todo el código, lo ejecutas en el
formulario de inicio del proyecto.