Pasar datos de un Form a otro

08/06/2008 - 16:36 por German | Informe spam
Hola amigos, yo quería saber como pasar datos de un form a otro, pero
sin crear instancias de estos form porque las ventanas ya las tengo
abiertas. Es decier, como hago para tener el foco de una ventana a
través de la otra?? Espero que entiedan mi consulta.. Saludos...

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
08/06/2008 - 23:27 | Informe spam
"German" wrote in message
news:
Hola amigos, yo quería saber como pasar datos de un form a otro, pero
sin crear instancias de estos form porque las ventanas ya las tengo
abiertas. Es decier, como hago para tener el foco de una ventana a
través de la otra?? Espero que entiedan mi consulta.. Saludos...



Es imposible tener una ventana abierta sin haber creado antes una
instancia. Así que busca en tu código el sitio donde creas la instancia, y
guárdate una referencia a la misma. Por ejemplo, si para abrir una ventana
hiciste esto:

Form1 frm = new Form1();
frm.Show();

pues entonces esa variable "frm" debes dejarla guardada en algún sitio
donde puedas recuperarla cuando quieras pasar datos a esa instancia del
Form1.
Si tienes guardada la variable, entonces es muy fácil pasar datos a ese
Form1, porque basta hacer frm.Miembro=datos;
Obviamente, ese "Miembro" será una propiedad o campo que habrás declarado
dentro de Form1 con la suficiente visibilidad para acceder a él desde fuera
(public o internal).

Como alternativa a lo anterior, si sabes con seguridad que tu programa
solo va a instanciar una única copia de ese formulario, puedes usar
variables estáticas. Las puedes poner dentro de cualquier clase, por
ejemplo, dentro del propio Form1:

public static string UnDato;

Y desde otro form pasarle datos haciendo Form1.UnDato=nuevoValor;

Aunque esto vale para pasar datos, no vale para ejecutar acciones sobre
el Form, por ejemplo para ordenarle que pinte inmediatamente esos datos en
pantalla. Para eso hay que recurrir al primer método (usar la referencia a
la instancia existente).
Respuesta Responder a este mensaje
#2 German
09/06/2008 - 22:54 | Informe spam
Gracias, es este mi caso, pero lo que no sé es cómo guardar una
referencia a una variable. En tu ejemplo debería guardar una
referencia a la variable frm para después poder utilizar la propiedad
"Miembro".
Mi caso es este:
Yo tengo mi clase menú que abre una ventana (Vpaciente) y desde esa
ventana apretando un botón se abre otra ventana que es un listado de
pacientes.
Yo elijo un paciente de esa lista y lo que quiero es que se cargue ese
paciente elegido en un texbox de mi ventana Vpaciente. La ventanas
siempre permanecen abiertas.
Saludos.
Respuesta Responder a este mensaje
#3 Alberto Poblacion
10/06/2008 - 08:06 | Informe spam
"German" wrote in message
news:
Gracias, es este mi caso, pero lo que no sé es cómo guardar una
referencia a una variable. En tu ejemplo debería guardar una
referencia a la variable frm para después poder utilizar la propiedad
"Miembro".
Mi caso es este:
Yo tengo mi clase menú que abre una ventana (Vpaciente) y desde esa
ventana apretando un botón se abre otra ventana que es un listado de
pacientes.
Yo elijo un paciente de esa lista y lo que quiero es que se cargue ese
paciente elegido en un texbox de mi ventana Vpaciente. La ventanas
siempre permanecen abiertas.



En resumen, desde la ventana Vpaciente abres la ventana Listado, y desde
Listado quieres modificar un textbox en Vpaciente. Por lo tanto, Listado
necesita una referencia al form Vpaciente. La forma más sencilla de obtener
la correspondiente referencia es usando el "this" dentro de Vpaciente, y que
Vpaciente le pase dicho dato a Listado, por ejemplo, a través de su
constructor, y que Listado guarde este dato en una variable de clase para
luego poderlo usar:

En Vpaciente

void AbrirListado_Click(...)
{
ListadoPacientes frm = new ListadoPacientes(this);
frm.Show();
}

En ListadoPacientes:

private Vpaciente llamante;
public ListadoPacientes(Vpaciente llamante)
{
this.llamante = llamante;
}

void DevolverResultado_Click(...)
{
llamante.txtPaciente.Text = valorDevuelto;
}

Recuerda que para que esto funcione, en los "Modifiers" del txtPaciente
tendrás que poner "public", (o "internal" si está en el mismo assembly).
Respuesta Responder a este mensaje
#4 German
11/06/2008 - 23:09 | Informe spam
gracias!! funcionó perfecto, seguiremos en contacto!!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida