Ho iniziato a sviluppare uno strumento di supporto per un vecchio sistema legacy che non è più mantenuto ma che è ancora necessario per il prossimo futuro. Il sistema legacy offre pochi, goffi e metodi soggetti a errori per attività di base come la gestione di utenti, regole, importazioni di dati e impostazioni. Lo strumento che sto sviluppando sarà utilizzato dal team di supporto interno.
Uso pannelli per raggruppare attività correlate. Intendo caricare ciascun pannello in un TabControl su richiesta dell'utente. Il modulo principale ha alcune impostazioni utente che riguardano / tutti i pannelli. Un pannello può eseguire un'attività di cui altri pannelli devono essere consapevoli.
Domanda TL: DR
Come si può sapere a MainForm
che Panel
A ha apportato un cambiamento significativo a cui potrebbe interessare l'altro panels
?
Come può un pannello ricevere informazioni da MainForm
?
I miei pensieri fino ad ora:
Il MainForm
potrebbe ottenere informazioni da ogni Panel
sottoscrivendo eventi personalizzati (come UsersUpdatedEvent
). Ma come fare il contrario visto che un pannello non "conosce" il modulo genitore?
Esempio di utilizzo: Homer vuole aggiungere un utente e una nuova regola per la società "Duff Beer". Apre l'applicazione e seleziona "Birra Duff" da un elenco a discesa. Quindi fa clic sull'icona della barra degli strumenti "Utente" e il pannello utente si apre in una scheda. Homer crea l'utente "Lisa" e quindi passa al pannello "Regole" e crea una nuova regola di proprietà di Lisa.
Domanda bonus:
Vorrei anche che ogni panel
fosse in grado di aggiungere voci di menu a MainForm
Menustrip
. Ora che ci penso, l'applicazione è un po 'come un Visual Studio molto leggero. Con schede e menu e barre degli strumenti che cambiano a seconda di che cosa sta guardando l'utente.