Ho un modulo Form1
dal quale visualizzo Form2
come modulo modale. Da Form2
eseguo tutti i tipi di modifica e cancellazione di diversi set di valori che dovrebbero essere riflessi in Form1
dopo la chiusura dello Form2
. Quindi quello che faccio è RePopulateControls_in_Form1()
dopo aver chiuso Form2
. Poiché RePopulateControls_in_Form1()
è un processo lungo, desidero eseguire tale metodo solo se alcune modifiche (modifica, aggiunta, eliminazione) avvengono in Form2
e non quando Form2
è appena aperto e chiuso.DialogResult che non chiude il modulo?
Quindi questo è quello che cerco di fare in Form1
:
Form2 f = new Form2();
if (f.ShowDialog(this) == DialogResult.Something)
RePopulateControls_in_Form1()
E poi nel Form2 che faccio,
private void bntEdit()
{
//If Edit?
this.DialogResult = DialogResult.Something;
}
private void bntAdd()
{
//If Add?
this.DialogResult = DialogResult.Something;
}
private void bntDelete()
{
//If Delete?
this.DialogResult = DialogResult.Something;
}
Ma il mio problema è .Something
. Se è diverso da .None
, Form2
viene semplicemente chiuso. Non voglio che Form2
si chiuda semplicemente da solo, a meno che l'utente non lo chiuda.
Se faccio questo:
RePopulateControls_in_Form1()
non è colpito!
In breve, nel mio programma come posso dire al compilatore di chiamare RePopulateControls_in_Form1()
solo se i valori vengono modificati in Form2
?
Nota: il ripopolamento è certamente necessario poiché i controlli sono creati dinamicamente e un po 'complessi (in realtà ciò che viene creato in Form2
sono i controlli della GUI e le sue etichette, ecc.).
OK Ottengo la prima parte, ma la seconda logica non è una tecnica di codifica corretta! – nawfal
Perché no? Nel caso sopra userò un evento. Tuttavia, se esiste un valore che viene utilizzato in un'applicazione con 20 moduli e dieci volte quella in molte classi, come si garantisce che venga utilizzato un solo valore. Preferiresti passare il valore dalla forma alla forma e dalla classe alla classe tramite un parametro o proprietà del costruttore .... – ScruffyDuck
Questo è qualcosa di semplice come impostare semplicemente un flag per far sapere a Form1 qualcosa su Form2.Perché una variabile globale che non è thread-safe? Capisco il significato di una variabile globale generale quando devi usarla su 220 classi come menzionato sopra. Ma qui, non solo, dovremmo evitare le variabili statiche, che dormono per l'intero ciclo di vita dell'applicazione, il più possibile, ma, cosa più importante, mi chiedo come potreste prevedere che il requisito menzionato nella domanda si riduca ad essere qualcosa come grande da essere impiegato in 220 classi dalla mia semplice domanda :) – nawfal