Herencia en Formularios

08/11/2004 - 17:58 por Mario | Informe spam
Hola a todos,
Tengo dos formularios que son bastante parecidos y el 90% del codigo que
refresca datos es igual en ambos.

Mi idea era crear una clase abstracta con el código común y después que cada
formulario realizase una herencia de ésta clase abstracta.
Mi problema como ya podeis suponer es que los formularios YA heredan de
System.Windows.Forms.

Hay alguna forma "Elegante" de realizar esta tarea?

Un saludo,

Preguntas similare

Leer las respuestas

#1 A.Poblacion
08/11/2004 - 18:47 | Informe spam
Haz que tu clase abstracta herede de System.Windows.Forms, y a continuación
que tus formularios hereden de la clase abstracta en lugar de heredar
directamente de System.Windows.Forms.


"Mario" <mcampo#nospam#@proytecsa.es> wrote in message
news:%
Hola a todos,
Tengo dos formularios que son bastante parecidos y el 90% del codigo que
refresca datos es igual en ambos.

Mi idea era crear una clase abstracta con el código común y después que


cada
formulario realizase una herencia de ésta clase abstracta.
Mi problema como ya podeis suponer es que los formularios YA heredan de
System.Windows.Forms.

Hay alguna forma "Elegante" de realizar esta tarea?
Respuesta Responder a este mensaje
#2 Alfredo Novoa
08/11/2004 - 18:59 | Informe spam
On Mon, 8 Nov 2004 17:58:47 +0100, "Mario"
<mcampo#nospam#@proytecsa.es> wrote:

Hola a todos,
Tengo dos formularios que son bastante parecidos y el 90% del codigo que
refresca datos es igual en ambos.

Mi idea era crear una clase abstracta con el código común y después que cada
formulario realizase una herencia de ésta clase abstracta.
Mi problema como ya podeis suponer es que los formularios YA heredan de
System.Windows.Forms.



¿Y en que consiste el problema?

Derivas tu clase abstracta de System.Windows.Forms.Form y listo.

No veo el problema.


Saludos
Respuesta Responder a este mensaje
#3 Mario
09/11/2004 - 10:00 | Informe spam
Al realizar lo que me has comentado no puedo ver el formulario final en
tiempo de diseño, ya que cuando intento verlo me aparece un mensaje
diciendome que el diseñador no puede crear una instancia de su superclase
por que se ha declarado como abstracta:

Mi estructura es la siguiente:

System.Windows.Forms.Form --> Clase abstracta --> MiForm

Un saludo
Respuesta Responder a este mensaje
#4 A.Poblacion
09/11/2004 - 10:19 | Informe spam
Si solo es un problema de diseñador, puedes evitarlo haciendo que la clase
no sea abstracta. Basta con que los métodos abstractos, en lugar de
abstractos los decares símplemente como virtuales, y si quieres los dejas
vacíos porque, al fin y al cabo, siempre vas a hacer un override en las
clases hijas.
El único problema de este enfoque es que el compilador no se cerciora de que
efectivamente has hecho el override en las clases hijas, con lo cual se te
podría escapar algún método sin "overridear". Pero si no tienes más que dos
clases hijas y no tienes muchísimos métodos abstractos, es bastante
improbable que alguno se te "escape".

"Mario" <mcampo#nospam#@proytecsa.es> wrote in message
news:
Al realizar lo que me has comentado no puedo ver el formulario final en
tiempo de diseño, ya que cuando intento verlo me aparece un mensaje
diciendome que el diseñador no puede crear una instancia de su superclase
por que se ha declarado como abstracta:

Mi estructura es la siguiente:

System.Windows.Forms.Form --> Clase abstracta --> MiForm
Respuesta Responder a este mensaje
#5 Octavio Hernandez
09/11/2004 - 10:38 | Informe spam
Hola,

La otra cosa por lo que puede que el diseñador no te muestre la clase es si
la has definido en el mismo fichero .CS que su clase ancestro, cosa que
espero no sea lo que te ocurra.

Si no es el caso, creo que la solución es exactamente la que te indica
Alberto.

Parece que del mensaje de error que obtienes se desprende que VS.NET compila
la clase y crea una instancia de ella para mostrarla en el diseñador, ¿no?

Slds - Octavio

"Mario" <mcampo#nospam#@proytecsa.es> escribió en el mensaje
news:
Al realizar lo que me has comentado no puedo ver el formulario final en
tiempo de diseño, ya que cuando intento verlo me aparece un mensaje
diciendome que el diseñador no puede crear una instancia de su superclase
por que se ha declarado como abstracta:

Mi estructura es la siguiente:

System.Windows.Forms.Form --> Clase abstracta --> MiForm

Un saludo


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida