Creazione di istanze di controlli utente a livello di programmazione

In una pagina Web Form è possibile creare un'istanza di un controllo server ASP.NET a livello di programmazione. La stessa operazione può essere eseguita con i controlli utente, utilizzando il metodo LoadControl della pagina contenitore. È tuttavia necessario prima associare un tipo sicuro al controllo utente utilizzando l'attributo className sulla direttiva @ Control. Tale associazione è necessaria poiché il metodo LoadControl restituisce un tipo della classe Control e per poter impostare le singole proprietà del controllo è necessario eseguire il cast del controllo utente nel tipo sicuro appropriato.

Nell'esempio che segue viene utilizzato l'attributo className per tipizzare in modo sicuro un controllo utente salvato nel file MyUserControl.ascx.

<%@ Control className="MyUserControl" %>

Per creare un'istanza di un controllo utente a livello di programmazione

  1. Registrare il controllo utente all'inizio della pagina Web Form con la direttiva @ Reference. Quando si crea il controllo utente a livello di programmazione, il tipo sicuro del controllo utente sarà disponibile nella pagina Web Form solo dopo aver creato un riferimento ad esso. Nel codice che segue viene ad esempio creato un riferimento a un controllo utente presente nel file MyUserControl.ascx.

    <%@ Reference Control="MyUserControl.ascx" %>
    

    Nota   Quando si creano istanze di un controllo utente in una pagina Web Form in modo dichiarativo, utilizzare la direttiva @ Register.

  2. Creare un'istanza del controllo utente nel file della classe di codice sottostante o nel blocco di dichiarazioni del codice per il file ASPX contenitore. Assegnare i valori delle proprietà e aggiungere il controllo all'oggetto ControlCollection della pagina contenitore, utilizzando il metodo Add. In tal modo il controllo diventa accessibile tramite la proprietà Control.Controls ereditata dalla pagina. Nell'esempio che segue viene creata un'istanza MyUserControl.ascx con la proprietà BackColor impostata su beige.

    Dim c1 As UserControl = LoadControl("MyUserControl.ascx")
    CType(c1, MyUserControl).BackColor = "beige"
    Page.Controls.Add(c1)
    [C#]
    Control c1 = LoadControl("MyUserControl.ascx");
    ((MyUserControl)c1).BackColor = "beige";
    Page.Controls.Add(c1);
    

    Nota   Quando si aggiungono controlli all'oggetto ControlCollection utilizzando il metodo Add, i controlli vengono inseriti nell'insieme nell'ordine in cui vengono elaborati. Per aggiungere un controllo in una posizione specifica dell'insieme, utilizzare il metodo AddAt e specificare la posizione di indice in cui memorizzare il controllo.

Vedere anche

Controlli utente Web Form | Creazione di un controllo utente | Inclusione di un controllo utente in un'altra pagina Web Form | Gestione di eventi server nelle pagine Web Form | Gestione degli eventi dei controlli utente