Deteccion de teclas en DataGrid

08/08/2006 - 15:31 por Arturo | Informe spam
Hola grupo.
Alguno sabe cómo detectar qué tecla se presionó dentro de un DataGrid ?
Los eventos KeyPress, KeyDown o KeyUp no se desencadenan cuando estoy con el
foco en las celdas del datagrid.
Gracias de antemano!
 

Leer las respuestas

#1 SoftJaén
08/08/2006 - 19:00 | Informe spam
"Arturo" preguntó:

Alguno sabe cómo detectar qué tecla se presionó dentro
de un DataGrid ?



Hola, Arturo:

Para conocer la tecla que se presionó dentro de un control DataGrid, puedes
reemplazar la función «ProcessCmdKey», de ésta manera la función será
llamada por cualquier control que te permita escribir texto, como por
ejemplo, un control TextBox. Si solamente deseas que sea llamada cuando se
pulse una tecla en el control DataGrid, declara una variable Boolean a nivel
de la propia clase Form, la cual deberá tener el valor True, cuando el foco
lo tenga el control DataGrid, y False, cuando el foco pase a otro control.

Inserta en la clase Form donde se encuentre el control DataGrid, el
siguiente código fuente:

Private IsDataGridFocused As Boolean

Protected Overrides Function ProcessCmdKey( _
ByRef msg As System.Windows.Forms.Message, _
ByVal keyData As System.Windows.Forms.Keys) As Boolean

' Si el control DataGrid no tiene el foco,
' abandonamos la función.
'
If Not IsDataGridFocused Then Return False

' La función procesará una tecla, reemplazando al
' método de la clase base.
'
Dim keyPressed As Keys = CType(msg.WParam.ToInt32(), Keys)

' Tecla presionada
'
MessageBox.Show(keyPressed.ToString)

Return MyBase.ProcessCmdKey(msg, keyData)

End Function

Para establecer el valor de la variable «IsDataGridFocused», puedes hacerlo
en los eventos «Enter» (True) y «Leave» (False) del control DataGrid.

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.

Preguntas similares