2009-05-04 18 views
5

bien Tengo una aplicación CRUD grande que utiliza pestañas con las formas incrustadas en ellos como tal ->formulario incrustado en un control o el Formulario de Control de Usuario como

public static void ShowFormInContainerControl(Control ctl, Form frm) 
    { 
     frm.TopLevel = false; 
     frm.FormBorderStyle = FormBorderStyle.None; 
     frm.Dock = DockStyle.Fill; 
     frm.Visible = true; 
     ctl.Controls.Add(frm); 
    } 

entonces me llaman el siguiente en el evento Form Load de la forma del padre ->

// Embedd the child form in the this Parent 
     WinFormCustomHandling.ShowFormInContainerControl(pnlModuleHost, _frmWWCModuleHost); 

Esto me fue dado HERE en respuesta a una pregunta anterior.

Como he progresado en esto, sigo teniendo la sensación nauseabunda de que múltiples capas de Formularios incrustados son un desastre que está por ocurrir y los Controles de Usuario siguen apareciendo. ¿Alguien puede ofrecerme algunos consejos concretos sobre el uso de controles de usuario frente a los formularios de incrustación?

Ver mi pregunta anterior para la inspiración de esta. HERE

También se puede encontrar una captura de pantalla de cómo se ve mi acción actual en HERE.

Gracias

Respuesta

2

de Microsoft Usaría un UserControl, creo que es simplemente más simple, puedes ver qué está pasando en el diseñador (si quieres), Form tiene muchas cosas que nunca necesitarás si solo vas a usarlas como una vista dentro de un contenedor .

Compare esto a su método:

public static void DockControl(this Control control, UserControl userControl) 
      { 
       userControl.Dock = DockStyle.Fill; 
       control.Controls.Clear(); 
       control.Controls.Add(userControl); 
      } 
3

Mi punto de vista es que es probable que no importa demasiado la dirección que elija. Yo elegiría ir con controles de usuario simplemente porque es el enfoque más estándar y le permitiría una mayor flexibilidad en el futuro. Por ejemplo, ¿qué sucede si su cliente acude a usted y le dice que le gustaría tener dos pestañas combinadas en una sola pestaña? Los controles de usuario le permitirían colocar esos dos controles en una sola pestaña, sin perder el tiempo combinando los controles en un solo formulario y luego volviéndolo a cambiar el próximo mes cuando los requisitos cambien de nuevo.

Tiene una aplicación grande y complicada que tiene muchas piezas que, según tengo entendido, necesitan comunicarse entre sí. Creo que la pregunta que debería hacerse no es "Formularios o controles de usuario". La pregunta que debería hacerse es: "¿Es esta la arquitectura correcta para esta aplicación?".

creo un diseño que incorpora una arquitectura de tipo plug-in puede ser más adecuado para las muchas piezas móviles que tiene ... O usted podría echar un vistazo a patrones y prácticas Composite Application Block (CAB)

+0

Interesante, ¿sería posible para que usted explique qué quiere decir con la arquitectura "de tipo plug-in"? ¿Se refiere a abstraer lo que las formas HACEN y tener diferentes UC intercambiables para realizar esas funciones básicas? –

+0

Aquí hay un excelente artículo sobre el diseño de su aplicación en torno a una arquitectura extensible. http://www.code-magazine.com/Article.aspx?quickid=0801041 – Utensil

Cuestiones relacionadas