Compartir a través de


Usar Visual C# para que un objeto UserControl actúe como un tiempo de diseño de contenedor de control

En este artículo se proporciona información sobre cómo hacer que un objeto UserControl actúe como contenedor de controles en tiempo de diseño después de agregar el objeto UserControl a un formulario Windows Forms.

Versión original del producto: Visual C#
Número de KB original: 813450

Resumen

En este artículo se hace referencia al espacio de nombres System.ComponentModelbiblioteca de clases de Microsoft .NET Framework .

En este artículo paso a paso se describe cómo hacer que un objeto UserControl actúe como un contenedor de controles en tiempo de diseño después de colocar UserControl en un formulario Windows Forms. Puede haber situaciones en las que quiera arrastrar un control a UserControl. Para ello, UserControl debe actuar como un contenedor de control.

De forma predeterminada, un objeto UserControl solo puede actuar como contenedor de control cuando se crea el control. Para que un userControl hospede un control constituyente después de colocar UserControl en un formulario Windows Forms, debe cambiar el diseñador predeterminado de UserControl. Para implementar servicios en tiempo de diseño para un componente, use la DesignerAttribute clase del System.ComponentModel espacio de nombres . DesignerAttribute viene antes de la declaración de clase. Inicialice pasando DesignerAttribute los designerTypeName parámetros y designerBaseType .

designerTypeName es el nombre completo del tipo de diseñador que proporciona servicios en tiempo de diseño. Pase la combinación de System.Windows.Forms.Design.ParentControlDesigner y para System.Design el designerTypeName parámetro . La ParentControlDesigner clase extiende el comportamiento en tiempo de diseño de un UserControl.

designerBaseType es el nombre de la clase base para el diseñador. La clase que se usa para los servicios en tiempo de diseño debe implementar la interfaz IDesigner.

Creación de UserControl como un contenedor de control en tiempo de diseño

  1. Cree un nuevo proyecto de biblioteca de controles de Windows de Visual C#. Para ello, siga estos pasos:

    1. Inicie Visual Studio.
    2. En el menú Archivo , elija Nuevoy haga clic en Proyecto.
    3. En Tipos de proyecto, haga clic en Visual C# y, a continuación, haga clic en Biblioteca de controles de Windows Forms en Plantillas.
  2. Asigne al proyecto el nombre ContainerUserControl. De forma predeterminada, se crea UserControl1.cs .

  3. En Explorador de soluciones, haga clic con el botón derecho en UserControl1.cs y, a continuación, haga clic en Ver código.

  4. Agregue el código siguiente a la sección de declaraciones:

    using System.ComponentModel.Design;
    
  5. Aplique el System.ComponentModel.DesignerAttribute atributo al control de la siguiente manera:

    [Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))]
    public class UserControl1 : System.Windows.Forms.UserControl
    {
        ...
    }
    
  6. En el menú Compilar , haga clic en Compilar solución.

Prueba de UserControl

  1. Cree un nuevo proyecto de Visual C#. Para ello, siga estos pasos:

    1. Inicie Visual Studio.
    2. En el menú Archivo , elija Nuevoy haga clic en Proyecto.
    3. En Tipos de proyecto, haga clic en Visual C# y, a continuación, haga clic en Aplicación de Windows Forms en Plantillas. De forma predeterminada, se crea Form1.cs .
  2. Agregue el control UserControl1 al cuadro de herramientas.

    1. En el menú Herramientas , haga clic en Elegir elementos del cuadro de herramientas.
    2. En la pestaña Componentes de .NET Framework, haga clic en Examinar.
    3. En el cuadro Abrir archivo , busque el archivo DLL que se creó al crear el control UserControl.
  3. Arrastre UserControl1 desde el cuadro de herramientas (en Windows Forms) a Form1.cs.

  4. Arrastre un control Button del cuadro de herramientas a UserControl1.

Nota:

UserControl1 se comporta como contenedor de controles para el control Button.

Referencias

Para obtener más información, vea el sitio web de Microsoft: ParentControlDesigner (Clase).