como abrir formulario pasado por variable.

07/02/2007 - 23:03 por Xuri | Informe spam
Hola, queria saber como hacer algo asi


form formulario = new form();

pero que formulario sea una variable.. por ejemplo

string nombre_form = "clientes";
form nombre_form = new form ();


y asi poder abrir con esa linea de codigo varios formularios. no se si me
explico.



Gracias. Un saludo

Ademas

Preguntas similare

Leer las respuestas

#1 Xuri
08/02/2007 - 11:34 | Informe spam
No me he acabado de explicar.

Tengo una clase llamada "formulario" que es una derivacion de Form y luego
clases diferentes que son cada uno de los formularios. .por ejemplo

clientes cliente1 = new clientes();

articulos articulo1 = new articulos ();

etc etc,

por tanto la unica opcion viable es la ultima, no?

Un saludo y gracias



"Alberto Poblacion" wrote:

"Xuri" wrote in message
news:
> form formulario = new form();
>
> pero que formulario sea una variable.. por ejemplo
>
> string nombre_form = "clientes";
> form nombre_form = new form ();
>
>
> y asi poder abrir con esa linea de codigo varios formularios. no se si me
> explico.

Puedes ir guardando los varios formularios que abres en una colección
indexada por el nombre que recibes en la variable. Por ejemplo:

using System.Collections.Generic;
...
private Dictionary<string, form> formulariosAbiertos = new
Dictionary<string,form>();
...
formulariosAbiertos.Add("clientes", new form());

formulariosAbiertos.Add("clientes2", new form());

formulariosAbiertos.Add("másClientes", new form());
...
//Para usar uno de ellos:
form f = formulariosAbiertos["clientes2"];
f.Show();


En resumidas cuentas, la variable que tú llamabas "nombre_form" en tu
pregunta, pasa a ser formulariosAbiertos["nombre_form"].



Respuesta Responder a este mensaje
#2 rogerrod61
08/02/2007 - 18:40 | Informe spam
Alberto, es muy interesante tu propuesta, hice algunas pruebas pero
solo me presentaba un form en blanco, me faltara algo?:

private Dictionary<string, Form> formulariosAbiertos = new
Dictionary<string, Form>();

formulariosAbiertos.Add("Form1", new Form());
formulariosAbiertos.Add("clientes", new Form());

Form wFO = formulariosAbiertos["clientes"];
wFO.Show();

Saludos,

Roger
Respuesta Responder a este mensaje
#3 rogerrod61
08/02/2007 - 18:56 | Informe spam
Xuri, creo que esto prodría servirte:

public Form mInstancia(string wSTformulario)
{
string wSTproyecto System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
wSTformulario = wSTproyecto + "." + wSTformulario;
Type wTY = Type.GetType(wSTformulario);
return (Form)Activator.CreateInstance(wTY);
}

Para utilizarlo:

string wSTformulario = "clientes" // El nombre del formulario que
desees
mInstancia(wSTformulario).Show();

Se podría sacar del metodo wSTproyecto y colocarlo global para que no
lo haga cada vez que entra. Espero sea lo que necesitas, saludos,

Roger
Respuesta Responder a este mensaje
#4 Alberto Poblacion
08/02/2007 - 19:05 | Informe spam
"rogerrod61" wrote in message
news:
Alberto, es muy interesante tu propuesta, hice algunas pruebas pero
solo me presentaba un form en blanco, me faltara algo?:

formulariosAbiertos.Add("Form1", new Form());
formulariosAbiertos.Add("clientes", new Form());

Form wFO = formulariosAbiertos["clientes"];
wFO.Show();



Bueno, tal como yo lo entendí, creía que querías abrir varias copias con
distinto nombre de un mismo formulario, cuya clase era la que había que
poner donde el código anterior dice "Form". Si de verdad pones "Form", se
abre un form genérico, que efectivamente está siempre en blanco.
Si lo que quieres es abrir distintas Clases de formulario pasando el
nombre de la clase como string, entonces la solución es diferente, y
requiere utilizar System.Reflection. Tienes una posible forma de hacerlo en
el mensaje de rogerrod61.
Respuesta Responder a este mensaje
#5 Rolando
09/02/2007 - 01:11 | Informe spam
La programación OO tiene una solución arquitectónica genérica para lo
que quieres hacer: el patrón Factory (hay abundante material y ejemplos
en internet)

Xuri wrote:
Hola, queria saber como hacer algo asi


form formulario = new form();

pero que formulario sea una variable.. por ejemplo

string nombre_form = "clientes";
form nombre_form = new form ();


y asi poder abrir con esa linea de codigo varios formularios. no se si me
explico.



Gracias. Un saludo

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