Principales respuestas
Abrir Formulario dentro de un mdi

Pregunta
-
Buenas tardes. lo siguiente que os comento ya lo postee, pero creo que no se me entendio. intentare explicarme mejor ya que no encuentro la solucion.
en mi aplicacion al iniciar se me abre un form mdi y en su interior otro formen el cual trabajo con normalidad, en el form mdi tengo unos menus donde abro diferentes forms dentro del mdi de la siguiente manera.
foreach (Form childForm in MdiChildren) { childForm.Close(); } Salidas Bajas = new Salidas(); Bajas.MdiParent = this; Bajas.Show();
esto lo manejo bien, y sin ningun problema, como veis, cierro un form y abro el siguiente, todo normal. el problema viene cuando abro en mi aplicacion un form pero independiente, osea que no lo abre dentro del mdi.
en este caso tendria abierto tres forms
mdi
form dentro del mdi
form independiente,
lo que quisiera hacer es poner un botón el el form independiente y que me pase unos valores que contienen en unos texbox, al form dentro del mdi, que contiene los mismos texbox.
alguna idea, opinion?
muchas gracias
lunes, 28 de junio de 2010 14:58
Respuestas
-
hola
si conoces la instancia del form mdi y creas una del form independiente
podrias usar una tecnica como esto
C# – Comunicar formularios MDI
C# – Comunicar formularios de forma desacoplada
como veras en una propiedad le pasa la instancia del form mdi que implemente una determianda interfaz, para luego desde el form independiente invocar la funcionalidad
de esta form desacoplas los formulario y los ahces independiantes entre ellos, cualqueira que implemente la interfaz podras invocar a este form independiente y comunicarse
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator lunes, 28 de junio de 2010 15:27
- Marcado como respuesta Rafael FagundesModerator lunes, 5 de julio de 2010 0:21
lunes, 28 de junio de 2010 15:21 -
Tendrás que establecer la comunicación entre el formulario independiente y el formulario interno del MDI desde algún sitio donde ambos sean visibles. Típicamente, si abres ambos desde algún menú en el MDI, entonces es éste el que es capaz de verlos a ambos. En ese caso, desde el sitio donde se abre el formulario independiente, le pasarías una referencia al hijo del MDI para que el primero pueda "hablarse" con el segundo por mediación de dicha referencia. Por ejemplo:
//Esto está en el menú que abre el formulario "independiente": Salidas hijo = this.MdiChildren[0]; //Referencia al hijo del MDI Form2 frmIndependiente = new Form2(); Form2.ReferenciaAlMdi = hijo; Form2.Show();
Por supuesto, el form externo tiene una propiedad pública para pasarle el dato mencionado. Otra posibilidad es que sea privada y se le pase a través del constructor.
Una vez que tiene esa referencia, puede cambiar los valores del hijo MDI a través de ella:
//Esto está en el Form2 public Salidas ReferenciaAlMdi; //... ReferenciaAlMdi.TextBox1.Text = valor;
Lógicamente, el TextBox1 del hijo Mdi tendrá que ser público para poder hacer lo anterior, o mejor todavía, puede exhibirse una propiedad pública en dicho formulario para pasarle los valores al textbox, en lugar de publicar el propio textbox.
- Marcado como respuesta Rafael FagundesModerator lunes, 5 de julio de 2010 0:21
lunes, 28 de junio de 2010 15:32Moderador
Todas las respuestas
-
hola
si conoces la instancia del form mdi y creas una del form independiente
podrias usar una tecnica como esto
C# – Comunicar formularios MDI
C# – Comunicar formularios de forma desacoplada
como veras en una propiedad le pasa la instancia del form mdi que implemente una determianda interfaz, para luego desde el form independiente invocar la funcionalidad
de esta form desacoplas los formulario y los ahces independiantes entre ellos, cualqueira que implemente la interfaz podras invocar a este form independiente y comunicarse
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Juan Carlos Ruiz PachecoMicrosoft employee, Moderator lunes, 28 de junio de 2010 15:27
- Marcado como respuesta Rafael FagundesModerator lunes, 5 de julio de 2010 0:21
lunes, 28 de junio de 2010 15:21 -
Tendrás que establecer la comunicación entre el formulario independiente y el formulario interno del MDI desde algún sitio donde ambos sean visibles. Típicamente, si abres ambos desde algún menú en el MDI, entonces es éste el que es capaz de verlos a ambos. En ese caso, desde el sitio donde se abre el formulario independiente, le pasarías una referencia al hijo del MDI para que el primero pueda "hablarse" con el segundo por mediación de dicha referencia. Por ejemplo:
//Esto está en el menú que abre el formulario "independiente": Salidas hijo = this.MdiChildren[0]; //Referencia al hijo del MDI Form2 frmIndependiente = new Form2(); Form2.ReferenciaAlMdi = hijo; Form2.Show();
Por supuesto, el form externo tiene una propiedad pública para pasarle el dato mencionado. Otra posibilidad es que sea privada y se le pase a través del constructor.
Una vez que tiene esa referencia, puede cambiar los valores del hijo MDI a través de ella:
//Esto está en el Form2 public Salidas ReferenciaAlMdi; //... ReferenciaAlMdi.TextBox1.Text = valor;
Lógicamente, el TextBox1 del hijo Mdi tendrá que ser público para poder hacer lo anterior, o mejor todavía, puede exhibirse una propiedad pública en dicho formulario para pasarle los valores al textbox, en lugar de publicar el propio textbox.
- Marcado como respuesta Rafael FagundesModerator lunes, 5 de julio de 2010 0:21
lunes, 28 de junio de 2010 15:32Moderador