Ho creato un'applicazione WinForms piuttosto grande che lavora nell'industria per alcuni anni. Comunica con molti dispositivi HW. L'applicazione può essere configurata per utilizzare o non utilizzare alcuni di questi dispositivi e la GUI viene modificata da questa configurazione. Ora verranno aggiunti altri dispositivi (e le possibili configurazioni dell'applicazione), quindi ho bisogno di rifattorizzare l'intera applicazione, forse anche di scriverne di più e sarà un lavoro molto doloroso in quanto è stato generalmente il mio primo progetto più grande.
Ho particolarmente paura di rendere la GUI dipendente dalla configurazione dell'applicazione. In questo momento, ho molti controlli nel mio file Form.Designer.cs
(creato in drag & drop designer), e sto abilitando / disabilitando alcuni pulsanti, cambiando testo di alcune etichette, aggiungendo o rimuovendo pannelli ecc in ArrangeControls()
funzione in base alla configurazione, anche nel file Form.Designer.cs
.
Questa funzione è simile a questa:
void ArrangeControls(Config hwCfg)
{
if (!hwCfg.dev1&& !hwCfg.dev2&& !hwCfg.dev3&& !hwCfg.dev4)
{
panelDevices.Dispose();
lastPannel = panelTime;
}
else
{
if(hwCfg.dev1)
...
else
...
}
...
}
Questa è una soluzione molto disgustosa con poche centinaia di linee in questo momento e ho anche bisogno di aggiungere più controlli e più combinazioni possibili di aspetto dei controlli. Puoi suggerirmi qualche schema, come avere sotto controllo questo problema?