In alcuni casi è necessario recuperare un controllo annidato all'interno di una serie di altri, senza poter sapere a prori quale sia esattamente il suo controllo genitore. In casi come questo è necessario scrivere una funzione che faccia la scansione, in maniera ricorsiva, dell'intero albero dei controlli, così da poter essere utilizzato, ad esempio, sia all'interno di pagine che siano basate su Master Page, sia in altri contesti:
public Control FindControlRecursive(Control owner, string controlID) { Control myControl = null; // faccio un ciclo su tutti i controlli if (owner.Controls.Count > 0) { foreach (Control c in owner.Controls) { myControl = FindControlRecursive(c, controlID); if (myControl != null) return myControl; } } // ho trovato il controllo, lo restituisco if (controlID.Equals(owner.ID)) return owner; return null; } // recupero un controllo Label chiamato Title Label footer = FindControlRecursive(this, "Title") as Label;
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.