Su alcune funzioni generiche, sembra che l'accesso a una funzione su mainform direttamente dall'usercontrol sia più semplice che generare un evento. Ad esempio: una funzione sul modulo principale che visualizza un centro di controllo desiderato centrato e ottimizzato.
Rendere statica questa funzione, o accedere a questa funzione per riferimento dal controllo utente al suo genitore, piuttosto che innalzare un evento, sembra molto conveniente. In questo modo:
usercontrol_A uc_a = new usercontrol_A();
MainForm mainform_functions = (MainForm)Parent;
mainform_functions.DisplayControl(uc_a);
Aumentare un evento sembra più complesso in questi casi - Devo dichiarare tutti gli eventi di new userControl_B (che include anche l'avvio di usercontrol_C e la sua visualizzazione) all'interno dell'evento che mostra (e avvia) userControl_B:
userControl_A.ShowUserControl_B+= (s,e) =>
{
usercontrol_B uc_b = new usercontrol_B(); DisplayControl(uc_b);
uc_b.show_uc_c += (s2,e2) => {usercontrol_C uc_c = new usercontrol_C(); DisplayControl(uc_c); }
}
troppa confusione qui .
È difficile da codificare e leggere in seguito. (In aggiunta, passare parametri ad un altro usercontrol è un incubo come questo - ho bisogno di salvare il parametro artificialmente sulla classe usercontrol del mittente e poi di lanciarlo più tardi all'interno dell'evento)
Qual è la tua opinione? È del tutto "proibito" codificare in questo modo, almeno su funzioni generiche come ho detto? Non è un codice più chiaro che ha bisogno di qualche piccolo ritocco per il riutilizzo preferibile?