2009-05-04 12 views
5

Va bene Ho un grande app CRUD che utilizza le schede con i moduli incorporati in essi in questo modo ->modulo incorporato in un controllo o di modulo come controllo utente

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); 
    } 

ho quindi chiamare il seguito nell'evento Form Load del form padre ->

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

questo è stato dato a me HERE in risposta alla mia domanda precedente.

Mentre procedo in questo modo continuo ad avere la sensazione nauseante che più livelli di moduli incorporati siano un disastro in attesa che accada e che i controlli utente continuino a spuntare. Qualcuno può offrirmi qualche consiglio concreto sull'uso dei controlli utente e dei moduli di incorporamento?

Vedere la mia domanda precedente per l'ispirazione per questo. HERE

Inoltre, è possibile trovare una schermata di come appare il mio layout di modulo incorporato in azione HERE.

Thank You

risposta

2

di Microsoft Userei un UserControl, il suo pensiero è semplicemente più semplice, puoi vedere che cosa sta succedendo nel designer (se vuoi), Form ha un sacco di cose che non ti serviranno mai se lo utilizzerai solo come vista all'interno di un contenitore .

confronta questo al tuo metodo:

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

Il mio punto di vista è che probabilmente non importa troppo in quale direzione si sceglie. Sceglierei di utilizzare i controlli utente semplicemente perché è l'approccio più standard e consentirebbe una maggiore flessibilità in futuro. Ad esempio, cosa succede se il tuo cliente viene da te e dice che vorrebbero due schede combinate in un'unica scheda? I controlli utente consentirebbero di suddividere questi due controlli in un'unica scheda senza doverli riunire in una combinazione di controlli in un unico modulo e quindi di modificarli nuovamente il mese prossimo quando i requisiti cambiano di nuovo.

Hai un'applicazione grande e complicata che ha molti pezzi che, da quello che ho capito, hanno bisogno di comunicare tra loro. Penso che la domanda che dovresti porci non sia "Forms or User Controls?". La domanda che dovresti porci è: "È questa l'architettura giusta per questa app?".

penso un design che hanno inserito un'architettura a plugin-tipo può essere più adatto per le molte parti in movimento che hai ... o si potrebbe dare un'occhiata a Patterns and Practices Composite Application Block (CAB)

+0

Interessante, sarebbe possibile per voi a spiegare cosa si intende per architettura "plugin-tipo"? Ti stai riferendo ad astrarre ciò che le forme DO e hanno differenti UC intercambiabili per eseguire quelle funzioni di base? –

+0

Ecco un grande articolo su come progettare l'applicazione su un'architettura estensibile. http://www.code-magazine.com/Article.aspx?quickid=0801041 – Utensil

Problemi correlati