C sharp - como paso un valor entre ventanas

 
Vista:

como paso un valor entre ventanas

Publicado por diana (14 intervenciones) el 09/05/2007 16:31:46
ayuda pleace !!!, soy nueva en esto de c#

tengo dos formas en mi aplicacion,

en la primera :

tengo varias cajas de texto que deben ser llenadas con el resultado del segundo form.

el segundo form:

tiene un data grid view con datos, al dar doble click sobre una fila de grid, debo cerrar el form 2 y regresar los datos del grid al priemr form.

???????? sin embargo no se como !!!! ????????

Acceso a los datos del grid y los almaceno en variables de la siguiente manera:

string dato = dg_ayuda.Rows[dg_ayuda.CurrentCell.RowIndex].Cells[0].Value.ToString();

... etc

sin embargo no se como hacer para q al cerrar el form2, devolver los datos para usarlos en el form1 =( ... alguien me puede ayudar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:como paso un valor entre ventanas

Publicado por Emilio (13 intervenciones) el 09/05/2007 23:14:13
Supongo que el form2 lo habrás creado dentro de form1. De esta forma:

form2 VentanaNueva = new form2();
VentanaNueva.Show(); // O ShowDialog()

Si quieres que el grid del form2 sea accesible desde form1 debes establecer el modificador de acceso en "public", no en "private". Esto se hace en propiedades --> modifiers.

Hay varias soluciones buenas para lo que quieres hacer:

-Si el form2 lo has llamado mediante .ShowDialog() (hasta que no se cierre el form no avanza el programa), entonces en la línea siguiente a ShowDialog() accedes al grid del form2. Así:

string DatoProvenienteDeForm2;
form2 VentanaNueva = new form2();
if (VentanaNueva.ShowDialog()==DialogResult.OK)
{
DatoProvenienteDeForm2 = VentanaNueva.dg_ayuda.Rows[dg_ayuda.CurrentCell.RowIndex].Cells[0].Value.ToString();
}

---
-Si lo que has hecho es llamar al form2 mediante Show() hay que hacerlo de otra forma. Si pretendes que se siga usando form1 aunque form2 esté abierto usa Show(), si quieres que form1 no se pueda usar hasta que se cierre form2 usa ShowDialog().

Si usas .Show() entonces el form1 debe saber en qué momento has cerrado form2 para tomar los datos. Para eso puedes usar los eventos. Puedes establecer una determinada rutina de form1 para que se ejecute cuando form2 se cierra. Esto se hace así:

form2 VentanaNueva;
string DatoProvenienteDeForm2;

/*En este caso las variables deben ser globales porque si no entonces al acabarse la rutina donde las defines se perderían*/
...
...

VentanaNueva = new form2();
VentanaNueva.Show();
VentanaNueva.FormClosing+= new FormClosingEventHandler(RutinaDePasoDeDatos);
}

private void RutinaDePasoDeDatos(object sender, FormClosingEventArgs e)
{
DatoProvenienteDeForm2 = VentanaNueva.dg_ayuda.Rows[dg_ayuda.CurrentCell.RowIndex].Cells[0].Value.ToString();
}

...
Como ves hay una gran variedad de posibilidades para tomar datos del form2 desde el form1, aunque lo primero es poner el grid como public en vez de como private.
Bye!

P.D: Si quieres me puedes agregar al MSN y me vas comentando más dudillas de C#, que me vienen a mí bien para aprender y eso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar