none
Modificar Controles en Formulario Heredado RRS feed

  • Pregunta

  • Hola, tengo un formulario que hereda de otro. Lo que quiero hacer es eliminar unos controles del formulario y colocar otros. El tema es que no me permite eliminar controles del formulario que hereda del otro. Se puede hacer esto?

    muchas gracias

    lunes, 5 de abril de 2010 20:09

Respuestas

  • Hola Juan.

    posiblemente solo para eso y si va a ser asi siempre, sea ocultar lo que no quieras como ha comentado crituscam.

    si quieres usar herencia, debe ser la clase padre la mas basica (sin esos 2 botones ni sus eventos) de modo que la clase hija que va a heredar de esta, sera la que añada esos 2 botones. De esta forma tienes un formulario basico que es el padre y las clases hijas pueden ir añadiendole mas controles (pero nunca puedes quitar, de ahi que la clase padre tenga que ser la mas basica de todas).

    Otra forma seria que creases los 2 botones dinamicamente (en tiempo de ejecucion) o bien si ya estan creados los botones, puedes eliminarlos y crear otros dinamicamente con sus eventos.

    Tambien puedes modificar las propiedades de los botones si no son muchas y sus eventos para no tener que eliminarlos, simplemente modificas sus propiedades en tiempo de ejecucion al cargarse el boton (evento loaded).

     

    En fin, existen bastantes alternativas, unas mejor que otras en cuanto a optimizacion y elegancia en la programacion, asi que debes evaluarlas.


    Saludos
    David González
    jueves, 8 de abril de 2010 18:24

Todas las respuestas

  • hola juan manuel

    y no se podra utilizar la funcion hidden¿?, pues al ser heredados creeria yo que deberias eliminarlos desde su padre original, entonces una opcion podria ser ocultarlos, no utilizarlos.

    control.visibility=System.Windows.Visibility.Hidden

    lunes, 5 de abril de 2010 21:37
  • Si, pensaba lo mismo, pero por ahi imaginaba que habia otra opcion. bueno, parece que no jaja. Muchas gracias.
    lunes, 5 de abril de 2010 23:10
  • supongo que debe haber otra opcion, porque lo que yo quiero es que desaparezcan del disenador asi puedo agregar otros controles. Y si tengo que crear controles personalizados para despues heredarlos perderia mucho tiempo porque son muchos controles que lleva el formulario.
    martes, 6 de abril de 2010 20:43
  • Hola Juan Manuel.

    No puedes eliminar ningun miembro de una clase padre desde una clase derivada, esto es asi en el paradigma de la programacion OO.

    Si lo que dices es realmente lo que quieres hacer, significa que has aplicado mal la herencia, puedes hacer uso del patron composite, para realizar una composicion de objetos en lugar de usar herencia.

    No obstante, puedes realizar un parche (una pequeña chapucilla que no recomiendo), en el constructor de la clase hija puedes establecer todos los controles que no quieras ver a null, de forma que no seran instanciados. (bueno, en realidad si que son instanciados ya que siempre se llama al contructor del padre y luego al hijo, pero luego son eliminadas por el hijo).


    Saludos
    David González
    miércoles, 7 de abril de 2010 6:35
  • Bueno, como tendria que hacer para utilizar la mayoria de los controles de un form en otro form sin volver a escribir código y sin usar herencia?? Porque de un form a otro solo cambian 2 botones y los eventos de los botones.

    muchas gracias

    jueves, 8 de abril de 2010 18:05
  • Hola Juan.

    posiblemente solo para eso y si va a ser asi siempre, sea ocultar lo que no quieras como ha comentado crituscam.

    si quieres usar herencia, debe ser la clase padre la mas basica (sin esos 2 botones ni sus eventos) de modo que la clase hija que va a heredar de esta, sera la que añada esos 2 botones. De esta forma tienes un formulario basico que es el padre y las clases hijas pueden ir añadiendole mas controles (pero nunca puedes quitar, de ahi que la clase padre tenga que ser la mas basica de todas).

    Otra forma seria que creases los 2 botones dinamicamente (en tiempo de ejecucion) o bien si ya estan creados los botones, puedes eliminarlos y crear otros dinamicamente con sus eventos.

    Tambien puedes modificar las propiedades de los botones si no son muchas y sus eventos para no tener que eliminarlos, simplemente modificas sus propiedades en tiempo de ejecucion al cargarse el boton (evento loaded).

     

    En fin, existen bastantes alternativas, unas mejor que otras en cuanto a optimizacion y elegancia en la programacion, asi que debes evaluarlas.


    Saludos
    David González
    jueves, 8 de abril de 2010 18:24
  • Gracias por la ayuda. Investigue un poco y creo que lo mas conveniente es crear un control personalizado y agregarlo a los dos formularios sin los controles que estan de mas. Y luego agregar aparte los demas controles. Muchas Gracias.
    jueves, 8 de abril de 2010 19:55