llamar a un formulario

25/08/2004 - 22:51 por Yo | Informe spam
Amigos tengo el siguiente problema necesito llamar a un formulario en una
aplicacion , el nombre de el mismo se encuentra en una base de datos
se que un formulario se llama asi

miformulario d= new miformulario();
d.Show;

pero no tengo la remota idea de como llamar a uno cullo nombre se encuentre
en la base de datos encontre una forma de hacerlo con Assembly pero debo
crear un dll , peor no es la forma que necesito,

Seria estupendo que me pudieran ayudar, gracias de antemano debajo coloco la
forma de hacerlo con Assembly por si alguien la necesita


private void Execute(String assemblyName, string objectName, String
methodName) {

try {

Assembly assembly = Assembly.LoadFrom(assemblyName);

Type type = assembly.GetType(objectName);

MethodInfo method;

Form instance = (Form)Activator.CreateInstance(type);

if ((this.IsMdiContainer) && (instance.FormBorderStyle !FormBorderStyle.FixedDialog)) {

method = type.GetMethod(methodName, new Type[] {});

instance.MdiParent = this;

method.Invoke(instance, new object[]{});

} else {

method = type.GetMethod(methodName, new Type[] {typeof(Form)});

method.Invoke(instance, new object[]{this});

}

}

catch (Exception e) {

MessageBox.Show(assemblyName + Environment.NewLine + objectName +
Environment.NewLine + methodName + Environment.NewLine + e.ToString());

}

}

Preguntas similare

Leer las respuestas

#1 pablo crosio
25/08/2004 - 23:37 | Informe spam
hola!

si decis que el formulario esta definido en el mismo
ensamble desde el que lo queres llamar:

Form f = (Form)Activator.CreateInstance(Type.GetType
("EspacioDeNombres.NombreDeClaseFormulario"));
f.Show();

deberia funcionar

salu2!!

pablo

Amigos tengo el siguiente problema necesito llamar a un


formulario en una
aplicacion , el nombre de el mismo se encuentra en una


base de datos
se que un formulario se llama asi

miformulario d= new miformulario();
d.Show;

pero no tengo la remota idea de como llamar a uno cullo


nombre se encuentre
en la base de datos encontre una forma de hacerlo con


Assembly pero debo
crear un dll , peor no es la forma que necesito,

Seria estupendo que me pudieran ayudar, gracias de


antemano debajo coloco la
forma de hacerlo con Assembly por si alguien la necesita


private void Execute(String assemblyName, string


objectName, String
methodName) {

try {

Assembly assembly = Assembly.LoadFrom(assemblyName);

Type type = assembly.GetType(objectName);

MethodInfo method;

Form instance = (Form)Activator.CreateInstance(type);

if ((this.IsMdiContainer) && (instance.FormBorderStyle !>FormBorderStyle.FixedDialog)) {

method = type.GetMethod(methodName, new Type[] {});

instance.MdiParent = this;

method.Invoke(instance, new object[]{});

} else {

method = type.GetMethod(methodName, new Type[] {typeof


(Form)});

method.Invoke(instance, new object[]{this});

}

}

catch (Exception e) {

MessageBox.Show(assemblyName + Environment.NewLine +


objectName +
Environment.NewLine + methodName + Environment.NewLine +


e.ToString());

}

}


.

Respuesta Responder a este mensaje
#2 Octavio Hernandez
26/08/2004 - 17:40 | Informe spam
Si sabes que todos los formularios están en el mismo ensamblado (EXE por
ejemplo), el algoritmo que tienes te valdría si utilizas
Assembly.GetExecutingAssembly() en vez de Assembly.Load(<assembly name>).

Salu2 - Octavio

"Yo" escribió en el mensaje
news:
Amigos tengo el siguiente problema necesito llamar a un formulario en una
aplicacion , el nombre de el mismo se encuentra en una base de datos
se que un formulario se llama asi

miformulario d= new miformulario();
d.Show;

pero no tengo la remota idea de como llamar a uno cullo nombre se


encuentre
en la base de datos encontre una forma de hacerlo con Assembly pero debo
crear un dll , peor no es la forma que necesito,

Seria estupendo que me pudieran ayudar, gracias de antemano debajo coloco


la
forma de hacerlo con Assembly por si alguien la necesita


private void Execute(String assemblyName, string objectName, String
methodName) {

try {

Assembly assembly = Assembly.LoadFrom(assemblyName);

Type type = assembly.GetType(objectName);

MethodInfo method;

Form instance = (Form)Activator.CreateInstance(type);

if ((this.IsMdiContainer) && (instance.FormBorderStyle !> FormBorderStyle.FixedDialog)) {

method = type.GetMethod(methodName, new Type[] {});

instance.MdiParent = this;

method.Invoke(instance, new object[]{});

} else {

method = type.GetMethod(methodName, new Type[] {typeof(Form)});

method.Invoke(instance, new object[]{this});

}

}

catch (Exception e) {

MessageBox.Show(assemblyName + Environment.NewLine + objectName +
Environment.NewLine + methodName + Environment.NewLine + e.ToString());

}

}


Respuesta Responder a este mensaje
#3 Jose Luis Manners
26/08/2004 - 19:24 | Informe spam
Adicional a lo que ya Octavio te planteó hay otra manera de cargar el
formulario si lo serializas a XML. Hay varios articulos oline sobre el
tema, aqui te pongo uno de ellos.

http://windowsforms.net/articles/wfml.aspx

Saludos,

Jose Luis Manners, MCP
http://ireflect.blogspot.com/

"Encuentra felicidad en tu trabajo o nunca serás feliz."
Cristóbal Colón

"Octavio Hernandez" wrote in message
news:
Si sabes que todos los formularios están en el mismo ensamblado (EXE por
ejemplo), el algoritmo que tienes te valdría si utilizas
Assembly.GetExecutingAssembly() en vez de Assembly.Load(<assembly name>).

Salu2 - Octavio

"Yo" escribió en el mensaje
news:
> Amigos tengo el siguiente problema necesito llamar a un formulario en


una
> aplicacion , el nombre de el mismo se encuentra en una base de datos
> se que un formulario se llama asi
>
> miformulario d= new miformulario();
> d.Show;
>
> pero no tengo la remota idea de como llamar a uno cullo nombre se
encuentre
> en la base de datos encontre una forma de hacerlo con Assembly pero


debo
> crear un dll , peor no es la forma que necesito,
>
> Seria estupendo que me pudieran ayudar, gracias de antemano debajo


coloco
la
> forma de hacerlo con Assembly por si alguien la necesita
>
>
> private void Execute(String assemblyName, string objectName, String
> methodName) {
>
> try {
>
> Assembly assembly = Assembly.LoadFrom(assemblyName);
>
> Type type = assembly.GetType(objectName);
>
> MethodInfo method;
>
> Form instance = (Form)Activator.CreateInstance(type);
>
> if ((this.IsMdiContainer) && (instance.FormBorderStyle !> > FormBorderStyle.FixedDialog)) {
>
> method = type.GetMethod(methodName, new Type[] {});
>
> instance.MdiParent = this;
>
> method.Invoke(instance, new object[]{});
>
> } else {
>
> method = type.GetMethod(methodName, new Type[] {typeof(Form)});
>
> method.Invoke(instance, new object[]{this});
>
> }
>
> }
>
> catch (Exception e) {
>
> MessageBox.Show(assemblyName + Environment.NewLine + objectName +
> Environment.NewLine + methodName + Environment.NewLine + e.ToString());
>
> }
>
> }
>
>


Respuesta Responder a este mensaje
#4 Yo
26/08/2004 - 22:20 | Informe spam
Gracia spro las respuestas todas me sirvieron , probe todas pero deje una
sola gracias por todo



"Yo" escribió en el mensaje
news:
Amigos tengo el siguiente problema necesito llamar a un formulario en una
aplicacion , el nombre de el mismo se encuentra en una base de datos
se que un formulario se llama asi

miformulario d= new miformulario();
d.Show;

pero no tengo la remota idea de como llamar a uno cullo nombre se


encuentre
en la base de datos encontre una forma de hacerlo con Assembly pero debo
crear un dll , peor no es la forma que necesito,

Seria estupendo que me pudieran ayudar, gracias de antemano debajo coloco


la
forma de hacerlo con Assembly por si alguien la necesita


private void Execute(String assemblyName, string objectName, String
methodName) {

try {

Assembly assembly = Assembly.LoadFrom(assemblyName);

Type type = assembly.GetType(objectName);

MethodInfo method;

Form instance = (Form)Activator.CreateInstance(type);

if ((this.IsMdiContainer) && (instance.FormBorderStyle !> FormBorderStyle.FixedDialog)) {

method = type.GetMethod(methodName, new Type[] {});

instance.MdiParent = this;

method.Invoke(instance, new object[]{});

} else {

method = type.GetMethod(methodName, new Type[] {typeof(Form)});

method.Invoke(instance, new object[]{this});

}

}

catch (Exception e) {

MessageBox.Show(assemblyName + Environment.NewLine + objectName +
Environment.NewLine + methodName + Environment.NewLine + e.ToString());

}

}


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida