Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.ComponentModel
biblioteca 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
Cree un nuevo proyecto de biblioteca de controles de Windows de Visual C#. Para ello, siga estos pasos:
- Inicie Visual Studio.
- En el menú Archivo , elija Nuevoy haga clic en Proyecto.
- En Tipos de proyecto, haga clic en Visual C# y, a continuación, haga clic en Biblioteca de controles de Windows Forms en Plantillas.
Asigne al proyecto el nombre ContainerUserControl. De forma predeterminada, se crea UserControl1.cs .
En Explorador de soluciones, haga clic con el botón derecho en UserControl1.cs y, a continuación, haga clic en Ver código.
Agregue el código siguiente a la sección de declaraciones:
using System.ComponentModel.Design;
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 { ... }
En el menú Compilar , haga clic en Compilar solución.
Prueba de UserControl
Cree un nuevo proyecto de Visual C#. Para ello, siga estos pasos:
- Inicie Visual Studio.
- En el menú Archivo , elija Nuevoy haga clic en Proyecto.
- 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 .
Agregue el control UserControl1 al cuadro de herramientas.
- En el menú Herramientas , haga clic en Elegir elementos del cuadro de herramientas.
- En la pestaña Componentes de .NET Framework, haga clic en Examinar.
- En el cuadro Abrir archivo , busque el archivo DLL que se creó al crear el control UserControl.
Arrastre UserControl1 desde el cuadro de herramientas (en Windows Forms) a Form1.cs.
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).