Cargar user control en tiempo de ejecucion

14/03/2007 - 21:05 por Lazarte Federico | Informe spam
Estimados

Estoy desarrollando una aplicacion, ya echa, que contemblaba la
utilizacion de un solo tipo de escaner. Esta aplicacion tiene en su
codigo la implementacion de un solo modelo de escaner, por lo que
tengo que limpiar todo ese codigo con llamadas genericas a las
funciones comunes de los escaneres, con el fin de soportar varios
modelos.

A esto lo solucione utilizando abstract factory, instanciando las
clases que correspondan segun el escaner elegido.

Ahora bien, la aplicacion tiene un formulario donde carga un control
de usuario, que corresponde al del escaner con el que se desarrollo.
Ahora necesito que en funcion al escaner seleccionado, se carge el
control de usuario correspondiente y es lo que no lobro poder lograr.
Tambien necesito acceder a algunas propiedades de dicho control de
usuario pero no lo he logrado. Todo esto tiene que ser en runtime en
funcion al escaner seleccionado.

Puedes darme una mano?

Desde ya muchas gracias.

Federico Lazarte
 

Leer las respuestas

#1 Diego Jancic
14/03/2007 - 22:29 | Informe spam
Hola!,
Vos deberias tener una interfaz de este tipo:

interface IEscaner
{
Image Escanear();
string NombreEscaner { get; }
// ... otras cosas que te importen...

// Una propiedad que devuelve algo del tipo control, podria ser un
UserControl o un panel creado dinamicamente... no importa..
Control InterfazPropiedades { get; }
}

Una vez que tenes esto, para mostrar el control deberias hacer algo
asi:

IEscaner esc = ... ; // Codigo para obtener el scanner actual

unPanel.Controls.Clear();

esc.InterfazPropiedades.Top = 0;
esc.InterfazPropiedades.Left = 0;
esc.InterfazPropiedades.Width = unPanel.Width;
esc.InterfazPropiedades.Height = unPanel.Height;
// Las 4 lineas las podrias reemplazar por un Dock, pero no me acuerdo
que enum usaba (de memoria) ;)

unPanel.Controls.Add(esc.InterfazPropiedades);


Y listo... si queres acceder a propiedades dentro de la UI podes hacer
2 cosas:
1) Publicar las propiedades que te interezan en IEscaner
2) En vez de devolver un Control devolves un objeto EscanerProperties
que herede de Control, y tenga las propiedades que a vos te
interesan...
Este objeto deberia ser abstracto.

Ese era tu problema o entendi mal?

Saludos!,
Diego

On 14 mar, 17:05, "Lazarte Federico"
wrote:
Estimados

Estoy desarrollando una aplicacion, ya echa, que contemblaba la
utilizacion de un solo tipo de escaner. Esta aplicacion tiene en su
codigo la implementacion de un solo modelo de escaner, por lo que
tengo que limpiar todo ese codigo con llamadas genericas a las
funciones comunes de los escaneres, con el fin de soportar varios
modelos.

A esto lo solucione utilizando abstract factory, instanciando las
clases que correspondan segun el escaner elegido.

Ahora bien, la aplicacion tiene un formulario donde carga un control
de usuario, que corresponde al del escaner con el que se desarrollo.
Ahora necesito que en funcion al escaner seleccionado, se carge el
control de usuario correspondiente y es lo que no lobro poder lograr.
Tambien necesito acceder a algunas propiedades de dicho control de
usuario pero no lo he logrado. Todo esto tiene que ser en runtime en
funcion al escaner seleccionado.

Puedes darme una mano?

Desde ya muchas gracias.

Federico Lazarte

Preguntas similares