Herencia

10/05/2008 - 20:34 por Javier Lozano | Informe spam
Saludos compañeros

Tengo el siguiente caso :

- Uso Visual Studio 2005 Standard Edition y .Net Framework 2.0 SP1

- He creado un user control, llamemoslo MyTextBox, que hereda directamente
de la clase TextBox

public class MyTextBox : TextBox (bla,bla,bla.)

- La clase MyTextBox tiene defiido en el constructor una linea de codigo
para asignar el font :
this.Font = new Font("Verdana",9)

- Este control lo pego en una forma, corro el ejemplito, todo perfecto.

- Ahora quiero cambiar el font de la clase MyTextBox, y lo defino a 12
puntos:

this.Font = new Font("Verdana",12)

- Compilo y corro la aplicacion, el textbox de la forma tiene el font
Verdana, pero en 9 puntos!!!

Segun lo que entiendo de herencia, el control pegado dentro de la forma
deberia automaticametne heredar las propiedades del control base. (Yo vengo
de programar en VFP y toda la vida a funcionado asi). Que sucede si
avanzando en mi proyecto me animo a cambiar de font a toda mi aplicacion.
Tendria que barrer todos y cada uno de los lugares de mi proyecto para
actualizar manualmente el font????

Espero puedan ayudarme a solucionar este problema

Gracias de antemano

Javier Lozano
Lima-Peru
 

Leer las respuestas

#1 Alberto Poblacion
11/05/2008 - 09:34 | Informe spam
"Javier Lozano" wrote in message
news:
- Uso Visual Studio 2005 Standard Edition y .Net Framework 2.0 SP1

- He creado un user control, llamemoslo MyTextBox, que hereda directamente
de la clase TextBox

public class MyTextBox : TextBox (bla,bla,bla.)

- La clase MyTextBox tiene defiido en el constructor una linea de codigo
para asignar el font :
this.Font = new Font("Verdana",9)

- Este control lo pego en una forma, corro el ejemplito, todo perfecto.

- Ahora quiero cambiar el font de la clase MyTextBox, y lo defino a 12
puntos:

this.Font = new Font("Verdana",12)

- Compilo y corro la aplicacion, el textbox de la forma tiene el font
Verdana, pero en 9 puntos!!!



No veo nada claro lo que intentas hacer. ¿DONDE, exactamente, haces lo de
"this.Font = new Font("Verdana",12)", que el control aparentemente está
ignorando, conforme con tu descripción? Si lo haces en el Form, estás
cambiando el Font del Form, no el del textbox.


Segun lo que entiendo de herencia, el control pegado dentro de la forma
deberia automaticametne heredar las propiedades del control base.



Ojo, el control base es el control del que heredas, no el control contenedor
donde lo ubicas. En otras palabras, MyTextBox hereda las propiedades de
TextBox, que a su vez hereda de TextBoxBase, que a su vez hereda de Control,
que hereda de Component, que hereda de MarshallByRefObject. En ningún
momento hay una herencia de Form.

Que sucede si avanzando en mi proyecto me animo a cambiar de font a toda
mi aplicacion. Tendria que barrer todos y cada uno de los lugares de mi
proyecto para actualizar manualmente el font????



Si no les cambias el Font en el constructor, entonces los textboxes
copian el Font del formulario contenedor (ojo, no heredan la propiedad, solo
copian el valor).

Preguntas similares