Sobrescribir boton heredado

15/11/2004 - 15:23 por Juan Melas | Informe spam
Diseñé un clase base de formulario que contiene varios botones que realizan
diversas acciones, como puedo en el formulario heredado sobreescribir el
código de estos botones, ya que me aparecen bloqueados y no me deja acceder
a ninuguna de sus propiedades o métodos.

Gracias

Preguntas similare

Leer las respuestas

#1 Tristan
15/11/2004 - 20:44 | Informe spam
Para que el diseñador winforms, permita manipular los controles, tienes que
definir el control como Public, en lugar de Friend.

Por otro lado, el evento por defecto se creará al hacer doble click, pero la
lista de eventos no aparecerá. En cualquier caso, podrás crear manualmente
el código del evento, sin la ayuda del diseñador.

Otra opción es crear una nueva referencia WithEvents al mismo control. Con
esta si dispondrás de eventos. Es decir, algo así:

Private WithEvents Button1_ As Button = MyBase.Button1

Dispondrás entonces de una referencia Button1_ que, ahora si, mostrará el
diseñador winforms. Por supuesto, puesto que es una referencia,
prácticamente no consume espacio.

Juan Carlos Badiola
MVP - C#
Respuesta Responder a este mensaje
#2 Juan Melas
16/11/2004 - 01:56 | Informe spam
Hice la prueba declarandolo Public, primero se ejecuta el código de la clase
base y luego el nuevo código, si declaro como overridable en la clase base
me reemplaza el código de la clase y solo ejecuta el nuevo código, cambié el
diseño del formulario base y el clik del botón lo mando a un m'etodo del
form., por ejemplo:

Private Sub cmdSave_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles cmdSave.Click
save()
End Sub
Luego en el m'etodo save lo declaro:
Public Overridable Sub save()
de ese modo parece que funciona, en el formulario derivado de la clase
agrego mi código al principio llamo
MyBase.Save(), agrego más código y aparentemente funciona bien, por lo visto
no es buena idea poner código en el click de un botón que se hereda .

Gracias


"Tristan" escribió en el mensaje
news:
Para que el diseñador winforms, permita manipular los controles, tienes
que
definir el control como Public, en lugar de Friend.

Por otro lado, el evento por defecto se creará al hacer doble click, pero
la
lista de eventos no aparecerá. En cualquier caso, podrás crear manualmente
el código del evento, sin la ayuda del diseñador.

Otra opción es crear una nueva referencia WithEvents al mismo control. Con
esta si dispondrás de eventos. Es decir, algo así:

Private WithEvents Button1_ As Button = MyBase.Button1

Dispondrás entonces de una referencia Button1_ que, ahora si, mostrará el
diseñador winforms. Por supuesto, puesto que es una referencia,
prácticamente no consume espacio.

Juan Carlos Badiola
MVP - C#


Respuesta Responder a este mensaje
#3 Tristan
16/11/2004 - 12:59 | Informe spam
Creo que no te había entendido bien.

¿Lo que quieres es que no se ejecute el delegado de la
clase base?. ¿Solo el de la hija?. ¿No sería mejor
entonces declarar la clase base sin tratamiento de
evento, y crear dos hijas a partir de ella?.

Solo hay una forma de evitar que el delegado del botón
base se ejecute. Sobreescribir el método OnClick del
botón, y esto no podrás hacerlo.

Bueno, si esto último no te sirve, tendrás que hacer lo
que has hecho. De hecho para mi es una buena idea. Tengo
por costumbre no poner código en el método del evento.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida