Cuando en un formulario, necesito una funcionalidad que no es permanente, (y que acá en general se sugiere usar un formulario separado, que no es mala idea), lo que hago/hacia, es:
a) crear un contenedor dentro del formulario que lo requiera (con el diseñador, para no pensar mucho)
b) dentro de ese contenedor coloco los controles que necesito que trabajen juntos, no necesito pasar parámetros porque no me salí del formulario llamador.
c) dicho contenedor inicialmente está oculto.
d) con un botón, textbox, etc. o sea algo que reaccione ante una acción del usuario, hago visible el contenedor.
e) el usuario actúa sobre los controles del contenedor, cuando termina, el contenedor se vuelve a ocultar.
De esa manera, no tengo que pasar nada de un formulario a otro.
Los controles del contenedor oculto están des-habilitados mientras el contenedor está oculto (pero no inaccesibles), por lo que puedo pre-cargarlos antes de mostrar el contenedor.
Si quiero que actúe como un formulario modal, agrego otro contenedor o control invisible (no oculto) que se activa al activar el contenedor adicional, de esa manera, los controles de debajo del contenedor principal quedan "intocables", sin necesidad de des-habilitarlos.
Estructura:
Formulario: (controles del formulario principal (a), control "invisible-transparente" que cubre todo el formulario (b), contenedor con funcionalidad extra (c))
b y c deben estar hidden al empezar la corrida del formulario. b debe estar por encima de a y c por encima (al frente) de b.
En a) debe haber algo (tecla, botón, control, etc.) que al pulsarse des-ocultan b y c., b al estar no oculto, tapa todo lo que tenga a) (controles del formulario en general), por lo que los hace "intocables", c, que está arriba de todo que accesible, el usuario opera sobre él y cuando termina la tarea específica, oculta b y c).
a queda otra vez accesible.
Se podría reemplazar b por un comando setall que disabled todos los controles en a, pero si estos controles estaban enabled o disabled por otros factores, deberá que disparar nuevamente los eventos correspondientes para recuperar los estado previos.
Saludos: Miguel, La Pampa (RA)