Uso de Visual C# para que un objeto UserControl actúe como tiempo de diseño del 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 Form.

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 contenedor de controles en tiempo de diseño después de colocar usercontrol en un formulario Windows Form. Puede haber situaciones en las que quiera arrastrar un control al control UserControl. Para ello, UserControl debe actuar como contenedor de control.

De forma predeterminada, un objeto UserControl solo puede actuar como contenedor de controles al crear el control. Para que un host UserControl sea un control constituyentes después de colocar usercontrol en un formulario Windows Form, debe cambiar el diseñador predeterminado de UserControl. Para implementar servicios en tiempo de diseño para un componente, use la DesignerAttribute clase del espacio de System.ComponentModel nombres. DesignerAttribute viene antes de la declaración de clase. Inicialice el DesignerAttribute pasando los designerTypeNamedesignerBaseType parámetros y .

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 amplía el comportamiento en tiempo de diseño de un control 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 del control UserControl como 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 Nuevo y, a continuación, haga clic en Proyecto.
    3. En Tipos de proyecto, haga clic en Visual C# y, a continuación, haga clic en Windows Forms Biblioteca de controles 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. On the Build menu, click Build Solution.

Prueba del control UserControl

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

    1. Inicie Visual Studio.
    2. En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.
    3. En Tipos de proyecto, haga clic en Visual C# y, a continuación, haga clic en Windows Forms aplicación 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) para Form1.cs.

  4. Arrastre un control Button desde el cuadro de herramientas a UserControl1.

Nota:

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

Referencias

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