Llamar a formulario de otro proyecto.

28/02/2008 - 19:36 por Xuri | Informe spam
Bueno os explico un poco el tema antes de hacer la pregunta.

El proyecto es en c# con windows forms.

Hasta ahora tenia un proyecto donde tenia las clases, formularios, todo
metido alli mismo y para llamar a un formulario lo llamaba de la siguiente
manera:

-
public static void cargarform(string wSTformulario,Form form_padre)
{
if (wSTformulario == "") return;
string wSTproyecto =
System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
wSTformulario = wSTproyecto + ".formularios." + wSTformulario;
facturacion.clases.formulario wFO =
(facturacion.clases.formulario)Activator.CreateInstance(Type.GetType(wSTformulario));
wFO.MdiParent = form_padre;
wFO.Show();
wFO.form_codigo.texto.Focus();
}

-
Lo hacia asi porque lo necesitaba asi, y poder llamar a los forms asi:

form_programa.cargarform("formularios." + Abrir_Formulario,
this.FindForm().ParentForm);

Y nada, hasta ahora bien, el problema esta que ahora, he separado el
proyecto de todas las clases, es decir
tengo dos proyectos.

SISTEMA
FACTURACION

En facturacion va todo lo que hace referencia a la aplicacion
Sistema es un conjunto de clases que quiero utilizar en mas proyectos

El problema esta que la clase que carga esto :

form_programa.cargarform("formularios." + Abrir_Formulario,
this.FindForm().ParentForm);

pues claro, ahora da error porque el formulario esta en el proyecto.Como
puedo hacer para que abra el formulario de otro proyecto?

O que solucion me dais?

Un saludo

Preguntas similare

Leer las respuestas

#1 Harvey Triana
28/02/2008 - 21:30 | Informe spam
Si uno de los dos proyectos es una biblioteca de clase, puedes desde el otro
acceder a objetos de la biblioteca.

<Harvey Triana />
http://vexpert.mvps.org

"Xuri" escribió en el mensaje
news:
Bueno os explico un poco el tema antes de hacer la pregunta.

El proyecto es en c# con windows forms.

Hasta ahora tenia un proyecto donde tenia las clases, formularios, todo
metido alli mismo y para llamar a un formulario lo llamaba de la siguiente
manera:

-
public static void cargarform(string wSTformulario,Form form_padre)
{
if (wSTformulario == "") return;
string wSTproyecto > System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
wSTformulario = wSTproyecto + ".formularios." + wSTformulario;
facturacion.clases.formulario wFO > (facturacion.clases.formulario)Activator.CreateInstance(Type.GetType(wSTformulario));
wFO.MdiParent = form_padre;
wFO.Show();
wFO.form_codigo.texto.Focus();
}

-
Lo hacia asi porque lo necesitaba asi, y poder llamar a los forms asi:

form_programa.cargarform("formularios." + Abrir_Formulario,
this.FindForm().ParentForm);

Y nada, hasta ahora bien, el problema esta que ahora, he separado el
proyecto de todas las clases, es decir
tengo dos proyectos.

SISTEMA
FACTURACION

En facturacion va todo lo que hace referencia a la aplicacion
Sistema es un conjunto de clases que quiero utilizar en mas proyectos

El problema esta que la clase que carga esto :

form_programa.cargarform("formularios." + Abrir_Formulario,
this.FindForm().ParentForm);

pues claro, ahora da error porque el formulario esta en el proyecto.Como
puedo hacer para que abra el formulario de otro proyecto?

O que solucion me dais?

Un saludo
Respuesta Responder a este mensaje
#2 Xuri
29/02/2008 - 00:13 | Informe spam
Vuelvo a explicarme.

Proyecto 1: FACTURACION
Aqui estan todos los formularios dentro de la carpeta formularios. Este
proyecto es el principal con un fichero de ejecucion inicio.cs que tiene la
funcion MAIN.
Ademas tiene dentro de la solucion el proyecto SISTEMA.


Proyecto 2: SISTEMA
Aqui esta el objeto (clase) del cual quiero llamar a un form que esta
dentro de facturacion.


Creo que es algo complicado o directamente no se puede hacer.. podeis
ayudarme?


"Harvey Triana" wrote:

Si uno de los dos proyectos es una biblioteca de clase, puedes desde el otro
acceder a objetos de la biblioteca.

<Harvey Triana />
http://vexpert.mvps.org

"Xuri" escribió en el mensaje
news:
> Bueno os explico un poco el tema antes de hacer la pregunta.
>
> El proyecto es en c# con windows forms.
>
> Hasta ahora tenia un proyecto donde tenia las clases, formularios, todo
> metido alli mismo y para llamar a un formulario lo llamaba de la siguiente
> manera:
>
> -
> public static void cargarform(string wSTformulario,Form form_padre)
> {
> if (wSTformulario == "") return;
> string wSTproyecto > > System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
> wSTformulario = wSTproyecto + ".formularios." + wSTformulario;
> facturacion.clases.formulario wFO > > (facturacion.clases.formulario)Activator.CreateInstance(Type.GetType(wSTformulario));
> wFO.MdiParent = form_padre;
> wFO.Show();
> wFO.form_codigo.texto.Focus();
> }
>
> -
> Lo hacia asi porque lo necesitaba asi, y poder llamar a los forms asi:
>
> form_programa.cargarform("formularios." + Abrir_Formulario,
> this.FindForm().ParentForm);
>
> Y nada, hasta ahora bien, el problema esta que ahora, he separado el
> proyecto de todas las clases, es decir
> tengo dos proyectos.
>
> SISTEMA
> FACTURACION
>
> En facturacion va todo lo que hace referencia a la aplicacion
> Sistema es un conjunto de clases que quiero utilizar en mas proyectos
>
> El problema esta que la clase que carga esto :
>
> form_programa.cargarform("formularios." + Abrir_Formulario,
> this.FindForm().ParentForm);
>
> pues claro, ahora da error porque el formulario esta en el proyecto.Como
> puedo hacer para que abra el formulario de otro proyecto?
>
> O que solucion me dais?
>
> Un saludo



Respuesta Responder a este mensaje
#3 Alberto Poblacion
29/02/2008 - 08:42 | Informe spam
"Xuri" wrote in message
news:
Vuelvo a explicarme.

Proyecto 1: FACTURACION
Aqui estan todos los formularios dentro de la carpeta formularios. Este
proyecto es el principal con un fichero de ejecucion inicio.cs que tiene
la
funcion MAIN.
Ademas tiene dentro de la solucion el proyecto SISTEMA.

Proyecto 2: SISTEMA
Aqui esta el objeto (clase) del cual quiero llamar a un form que esta
dentro de facturacion.

Creo que es algo complicado o directamente no se puede hacer.. podeis
ayudarme?



No debería haber ningún problema. Si en las propiedades del proyecto
Sistema has añadido ya una Referencia al proyecto Facturacion, todas las
clases que contiene Facturacion (incluidos los formularios, que al fin y al
cabo son clases) las puedes llamar igual que si estuvieran dentro del
proyecto Sistema, es decir poniendo EspacioDeNombres.NombreDeLaClase al
llamarlas. El EspacioDeNombres puede omitirse si es igual en los dos
proyectos. A lo mejor viene de ahi tu confusión, porque las clases que se
crean dentro de un mismo proyecto reciben de forma predeterminada el mismo
espacio de nombres, mientras no lo cambies, y por eso a lo mejor tienes la
costumbre de llamarlas simplemente con "NombreDeLaClase", sin anteponer el
"EspacioDeNombres.".
Respuesta Responder a este mensaje
#4 Xuri
29/02/2008 - 09:25 | Informe spam
Eso que indicas no es posible, ya tengo añadido como referencia al proyecto
FACTURACION el proyecto SISTEMA, y claro, me dice que no es posible crear una
referencia de facturacion dentro de SISTEMA porque crearia una dependencia
circular, o sea, asi no es posible.

Alguna solucion mas?

Un saludo

"Alberto Poblacion" wrote:

"Xuri" wrote in message
news:
> Vuelvo a explicarme.
>
> Proyecto 1: FACTURACION
> Aqui estan todos los formularios dentro de la carpeta formularios. Este
> proyecto es el principal con un fichero de ejecucion inicio.cs que tiene
> la
> funcion MAIN.
> Ademas tiene dentro de la solucion el proyecto SISTEMA.
>
> Proyecto 2: SISTEMA
> Aqui esta el objeto (clase) del cual quiero llamar a un form que esta
> dentro de facturacion.
>
> Creo que es algo complicado o directamente no se puede hacer.. podeis
> ayudarme?

No debería haber ningún problema. Si en las propiedades del proyecto
Sistema has añadido ya una Referencia al proyecto Facturacion, todas las
clases que contiene Facturacion (incluidos los formularios, que al fin y al
cabo son clases) las puedes llamar igual que si estuvieran dentro del
proyecto Sistema, es decir poniendo EspacioDeNombres.NombreDeLaClase al
llamarlas. El EspacioDeNombres puede omitirse si es igual en los dos
proyectos. A lo mejor viene de ahi tu confusión, porque las clases que se
crean dentro de un mismo proyecto reciben de forma predeterminada el mismo
espacio de nombres, mientras no lo cambies, y por eso a lo mejor tienes la
costumbre de llamarlas simplemente con "NombreDeLaClase", sin anteponer el
"EspacioDeNombres.".


Respuesta Responder a este mensaje
#5 Jesús López
29/02/2008 - 09:34 | Informe spam
Asegúrate de que el output de los proyectos van a la misma carpeta y en

wSTformulario = wSTproyecto + ".formularios." + wSTformulario;

incluye tambíen el nombre del ensamblado, ahora no recuerdo si el nombre del
ensamblado va antes o después de la clase, en cualquier caso sería una de
estas dos:

1) EspacioDeNombres.Clase, MiEnsamblado (yo creo que es esta)
2) MiEnsamblado, EspacioDeNombres.Clase

¿Los ensamblados están firmados con nombre seguro?

Si es así también tendrás que incluir en sSTformulario el public key token y
la versión.

Saludos:

Jesús López
www.solidq.com



"Xuri" escribió en el mensaje
news:
Eso que indicas no es posible, ya tengo añadido como referencia al
proyecto
FACTURACION el proyecto SISTEMA, y claro, me dice que no es posible crear
una
referencia de facturacion dentro de SISTEMA porque crearia una dependencia
circular, o sea, asi no es posible.

Alguna solucion mas?

Un saludo

"Alberto Poblacion" wrote:

"Xuri" wrote in message
news:
> Vuelvo a explicarme.
>
> Proyecto 1: FACTURACION
> Aqui estan todos los formularios dentro de la carpeta formularios.
> Este
> proyecto es el principal con un fichero de ejecucion inicio.cs que
> tiene
> la
> funcion MAIN.
> Ademas tiene dentro de la solucion el proyecto SISTEMA.
>
> Proyecto 2: SISTEMA
> Aqui esta el objeto (clase) del cual quiero llamar a un form que esta
> dentro de facturacion.
>
> Creo que es algo complicado o directamente no se puede hacer.. podeis
> ayudarme?

No debería haber ningún problema. Si en las propiedades del proyecto
Sistema has añadido ya una Referencia al proyecto Facturacion, todas las
clases que contiene Facturacion (incluidos los formularios, que al fin y
al
cabo son clases) las puedes llamar igual que si estuvieran dentro del
proyecto Sistema, es decir poniendo EspacioDeNombres.NombreDeLaClase al
llamarlas. El EspacioDeNombres puede omitirse si es igual en los dos
proyectos. A lo mejor viene de ahi tu confusión, porque las clases que se
crean dentro de un mismo proyecto reciben de forma predeterminada el
mismo
espacio de nombres, mientras no lo cambies, y por eso a lo mejor tienes
la
costumbre de llamarlas simplemente con "NombreDeLaClase", sin anteponer
el
"EspacioDeNombres.".


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