Problema con herencia visual

23/02/2007 - 17:37 por Alberto | Informe spam
Tengo un control de usuario (form) que maneja el evento KeyDown.

El problema surge cuando se crea una ficha descendiente de esta e intenta
manejar el mismo evento ya que observo que primero se ejecuta el código del
formulario base y después el de la propia ficha.

La única solución que le encontré fue la siguiente:
1) No asignar el evento KeyDown al método en el formulario base.
2) Hacerlo virtual.
3) En las fichas descendientes crear un override de dicho método y
asignárselo al evento KeyDown. Aquí, si interesa, se puede llamar al código
de la ficha base.

El problema es que lo veo muy complicado y, además, si una ficha
descendiente no quiere hacer nada como respuesta al KeyDown, tiene que crear
la sobrecarga del método para éste tenga efecto.

¿Le veis alguna solución?
Muchas gracias
 

Leer las respuestas

#1 Alberto Poblacion
23/02/2007 - 18:00 | Informe spam
"Alberto" wrote in message
news:
El problema surge cuando se crea una ficha descendiente de esta e intenta
manejar el mismo evento ya que observo que primero se ejecuta el código
del formulario base y después el de la propia ficha.

La única solución que le encontré fue la siguiente:
1) No asignar el evento KeyDown al método en el formulario base.
2) Hacerlo virtual.
3) En las fichas descendientes crear un override de dicho método y
asignárselo al evento KeyDown. Aquí, si interesa, se puede llamar al
código de la ficha base.

El problema es que lo veo muy complicado y, además, si una ficha
descendiente no quiere hacer nada como respuesta al KeyDown, tiene que
crear la sobrecarga del método para éste tenga efecto.

¿Le veis alguna solución?




En el formulario base, el evento KeyDown se asigna al método OnKeyDown.
Este método se hace virtual, y contiene el comportamiento predefinido que
debe tener el formulario base cuando se produce el evento.
En los formularios descendientes, si se desea no hacer nada en respuesta
al evento, se hace un override del OnKeyDown y se deja vacío. Si se desea
hacer algo, se escribe dentro del override, y si después se necesita llamar
al comportamiento del formulario base, se añade una llamada a
base.OnKeyDown.

Preguntas similares