Usare Visual C# per fare in modo che un oggetto UserControl funzioni come fase di progettazione del contenitore di controlli

Questo articolo fornisce informazioni su come fare in modo che un oggetto UserControl funzioni come contenitore di controlli in fase di progettazione dopo aver aggiunto l'oggetto UserControl a un Windows Form.

Versione originale del prodotto: Oggetto visivo C#
Numero KB originale: 813450

Riepilogo

Questo articolo fa riferimento allo spazio dei nomi System.ComponentModeldella libreria di classi di Microsoft .NET Framework.

Questo articolo dettagliato descrive come fare in modo che un oggetto UserControl funzioni come contenitore di controllo in fase di progettazione dopo aver inserito UserControl in un Windows Form. Possono verificarsi situazioni in cui si vuole trascinare un controllo in UserControl. A tale scopo, UserControl deve fungere da contenitore di controlli.

Per impostazione predefinita, un oggetto UserControl può fungere da contenitore di controllo solo quando si crea il controllo. Per rendere un host UserControl un controllo costitutivo dopo aver inserito UserControl in un Windows Form, è necessario modificare la finestra di progettazione predefinita di UserControl. Per implementare i servizi in fase di progettazione per un componente, usare la DesignerAttribute classe dello spazio dei System.ComponentModel nomi . L'oggetto DesignerAttribute viene fornito prima della dichiarazione di classe. DesignerAttribute Inizializzare passando i designerTypeName parametri e designerBaseType .

designerTypeName è il nome completo del tipo di finestra di progettazione che fornisce servizi in fase di progettazione. Passare la combinazione di System.Windows.Forms.Design.ParentControlDesigner e System.Design per il designerTypeName parametro . La ParentControlDesigner classe estende il comportamento in fase di progettazione per un oggetto UserControl.

designerBaseType è il nome della classe di base per la finestra di progettazione. La classe utilizzata per i servizi in fase di progettazione deve implementare l'interfaccia IDesigner.

Creare UserControl come contenitore di controlli in fase di progettazione

  1. Creare un nuovo progetto libreria di controlli Windows Visual C#. A tal fine, attenersi alla seguente procedura:

    1. Avviare Visual Studio.
    2. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
    3. In Tipi di progetto fare clic su Visual C#, quindi fare clic su Windows Forms Libreria di controlli in Modelli.
  2. Assegnare al progetto il nome ContainerUserControl. Per impostazione predefinita, viene creato UserControl1.cs .

  3. In Esplora soluzioni fare clic con il pulsante destro del mouse su UserControl1.cs e quindi scegliere Visualizza codice.

  4. Aggiungere il codice seguente alla sezione delle dichiarazioni:

    using System.ComponentModel.Design;
    
  5. Applicare l'attributo System.ComponentModel.DesignerAttribute al controllo come indicato di seguito:

    [Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))]
    public class UserControl1 : System.Windows.Forms.UserControl
    {
        ...
    }
    
  6. Nel menu Compila fare clic su Compila soluzione.

Testare UserControl

  1. Creare un nuovo progetto Visual C#. A tal fine, attenersi alla seguente procedura:

    1. Avviare Visual Studio.
    2. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
    3. In Tipi di progetto fare clic su Visual C# e quindi su Windows Forms'applicazione in Modelli. Per impostazione predefinita, viene creato Form1.cs .
  2. Aggiungere il controllo UserControl1 alla casella degli strumenti.

    1. Nel menu Strumenti fare clic su Scegli elementi della casella degli strumenti.
    2. Nella scheda Componenti di .NET Framework fare clic su Sfoglia.
    3. Nella casella Apri file individuare la DLL compilata quando è stato creato il controllo UserControl.
  3. Trascinare UserControl1 dalla casella degli strumenti (in Windows Forms) a Form1.cs.

  4. Trascinare un controllo Button dalla casella degli strumenti a UserControl1.

Nota

UserControl1 si comporta come contenitore di controlli per il controllo Button.

Riferimenti

Per altre informazioni, vedere il sito Web Microsoft: Classe ParentControlDesigner.