Tengo un formulario principal (llamémoslo frmHireQuote) que es hijo de un formulario MDI principal (frmMainMDI), que muestra otro formulario (frmImportContact) a través de ShowDialog () cuando se hace clic en un botón.
Cuando el usuario hace clic en 'Aceptar' en frmImportContact, quiero pasar algunas variables de cadena a algunos cuadros de texto en frmHireQuote.
Tenga en cuenta que podría haber varias instancias de frmHireQuote, obviamente es importante que regrese a la instancia que llamó a esta instancia de frmImportContact.
¿Cuál es el mejor método para hacer esto?
fuente
Normalmente creo un método estático en formulario / diálogo, al que puedo llamar. Esto devuelve el éxito (botón OK) o el fracaso, junto con los valores que deben completarse.
Y en el formulario:
Para llamar a tu formulario;
fuente
frm
can (y lo hice cuando lo leí) conduce a confusión ...Encontré otro pequeño problema con este código ... o al menos fue problemático cuando intenté implementarlo.
Los botones en frmMain no devuelven un valor compatible, usando VS2010 agregué lo siguiente y todo comenzó a funcionar bien.
Después de agregar los dos valores de botón, el diálogo funcionó muy bien Gracias por el ejemplo, realmente ayudó.
fuente
Acabo de poner algo en el constructor por referencia, para que el subformulario pueda cambiar su valor y el formulario principal pueda obtener un objeto nuevo o modificado del subformulario.
fuente
Uso bastante MDI, me gusta mucho más (donde se puede usar) que múltiples formas flotantes.
Pero para obtener lo mejor de ti, debes familiarizarte con tus propios eventos. Te hace la vida mucho más fácil.
Un ejemplo esquelético.
Ten tus propios tipos de interrupción,
Entonces tu propio tipo Args
Luego use el delegado dentro de su espacio de nombres, pero fuera de una clase
Ahora, ya sea manualmente o utilizando la GUI, haga que el MDIparent responda a los eventos de los formularios secundarios.
Pero con su propio Args, puede reducir esto a una sola función. y puede tener una disposición para interrumpir las interrupciones, lo que es bueno para la depuración, pero también puede ser útil de otras maneras.
Simplemente haga que todos sus códigos de eventos mdiparent apunten a la única función,
Un mecanismo de cambio simple suele ser suficiente para pasar eventos a los formularios apropiados.
fuente
Si desea pasar datos
form2
desdeform1
sin pasar como nuevoform(sting "data");
Haz eso en la forma 1
en forma 2 agregar
También puede usar el valor de
form1
esta manera si desea intercambiar algo enform1
solo en forma1
fuente
Primero debe definir el atributo en form2 (hijo), actualizará este atributo en form2 y también desde form1 (padre):
Llamada de form2 (child) desde form1 (parent):
fuente
Levanto un evento en el formulario estableciendo el valor y me suscribo a ese evento en el formulario (s) que necesitan lidiar con el cambio de valor.
fuente
Los delegados son la mejor opción para enviar datos de un formulario a otro.
fuente