C sharp - Pasar valores de un form a otro

   
Vista:

Pasar valores de un form a otro

Publicado por Manuel F. (17 intervenciones) el 03/07/2015 23:20:52
Muy buenas tardes a todos !!!

Tengo relativamente poco tiempo programando en C# (2010), apenas un año (por años, he estado programando en Visual Basic .Net), y tengo la siguiente duda...

He creado un Form MDI, con sus respectivos Forms 'hijos', se trata de un sencillo manejo de Base de Datos, cuando programo en VB, creo un módulo (.bas) en el cual creo un par de subrutinas (métodos tipo void equivalente) donde creo y abro y cierro la conexión con la base de datos, todo esto mediante variables "public", y así puedo mantener la conexión abierta mientras trabaje con la aplicación y luego cerrarla al finalizar su uso (esto, con el fin de evitar abrirl y cerrar conexiones continuamente con cada uno de los Forms hijos).

Al hacerlo en C#, cree una clase llamada public Conexiones y sus métodos void ConectarConBD y DesconectarDeBD (muy originales los nombres, ¿no?), y una variable public del tipo OleDbConnection , hasta ahí, la historia está muy bien... Pero ¿qué sucede? la variable la alcanzo a leer, por ejemplo, Cuando se abre el MDI principal, los métodos funcionan, y la conexión se mantiene en el dicho MDI... pero cuando se abre algún Form secundario, tengo volver a invocar los métodos de abrir y cerrar ya que ninguno de estos alcanza a leer el valor de la variable de conexión (abierta en el mdi principal) ¿qué estoy haciendo mal?

Esto es lo que coloco...

Conexiones cnn = new Conexiones(); (en los forms hijos y en el principal)

en el evento Load del MDI: ConectarConBD();

en el evento FormClosing del MDI: DesconectarConBD();


Gracias a quien pueda ayudarme con esto...



Manuel F. Borrego S.
Barcelona, Venezuela.
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

Pasar valores de un form a otro

Publicado por David (59 intervenciones) el 03/07/2015 23:59:08
Por lo que dices, el problema es que estás creando un objeto llamado cnn nuevo en cada formulario, no lo estás compartiendo.
Para compartirlo, en la ventana principal deja el código que tienes, pero donde creas y muestras las otras ventanas MDI, tienes que pasarle el objeto cnn.

Sería algo así parecido:

1
2
3
4
5
6
void button1_click(object sender, EventArgs e)
{
    ClaseHija1 hija1 = new ClaseHija1();
    hija1.cnn = cnn;
    hija1.Show();
}
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
Imágen de perfil de Wilfredo Patricio Castillo

Pasar valores de un form a otro

Pues lo que estás haciendo mal, es tener la conexion todo el tiempo abierta, lo correcto sería que la conexion se abra solo en el momento en que se necesite y se destruya.

Además si utilizaras un repositorio, quedaría excelente.

Saludos cordiales
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