Solución de problemas relacionados con la creación de controles y componentesTroubleshooting Control and Component Authoring

En este tema se enumeran los siguientes problemas comunes que surgen cuando se desarrollan componentes y controles.This topic lists the following common problems that arise when developing components and controls. Para obtener más información, vea Programar con componentes.For more information, see Programming with Components.

  • No se puede agregar el control al cuadro de herramientasCannot Add Control to Toolbox

  • No se puede depurar el control de usuario de Windows Forms o un componenteCannot Debug the Windows Forms User Control or Component

  • El evento se genera dos veces en el control o el componente heredadoEvent Is Raised Twice in Inherited Control or Component

  • Error en tiempo de diseño: "No se pudo crear el componente 'nombre del componente'"Design-Time Error: "Failed to Create Component 'Component Name'"

  • STAThreadAttributeSTAThreadAttribute

  • El icono del componente no aparece en el cuadro de herramientasComponent Icon Does Not Appear in Toolbox

No se puede agregar el control al cuadro de herramientasCannot Add Control to Toolbox

Si desea agregar un control personalizado que creó en otro proyecto o un control de terceros al cuadro de herramientas, debe hacerlo manualmente.If you want to add a custom control that you created in another project or a third-party control to the Toolbox, you must do so manually. Si el proyecto actual contiene el control o componente, debería aparecer en el cuadro de herramientas automáticamente.If the current project contains your control or component, it should appear in the Toolbox automatically. Para obtener más información, vea Tutorial: Rellenar automáticamente el cuadro de herramientas con componentes personalizados.For more information, see Walkthrough: Automatically Populating the Toolbox with Custom Components.

Para agregar un control al cuadro de herramientasTo add a control to the Toolbox

  1. Haga clic con el botón derecho en el cuadro de herramientas y, en el menú contextual, seleccione Elegir elementos.Right-click the Toolbox and from the shortcut menu, select Choose Items.

  2. En el cuadro de diálogo Elegir elementos de cuadro de herramientas, agregue el componente:In the Choose Toolbox Items dialog box, add the component:

    • Si desea agregar un control o un componente de .NET Framework, haga clic en la pestaña Componentes de .NET Framework.If you want to add a .NET Framework component or control, click the .NET Framework Components tab.

      -O bien-– or –

    • Si desea agregar un componente COM o un control ActiveX, haga clic en la pestaña Componentes COM.If you want to add a COM component or ActiveX control, click the COM Components tab.

  3. Si el control aparece en el cuadro de diálogo, confirme que está seleccionado y, a continuación, haga clic en Aceptar.If your control is listed in the dialog box, confirm it is selected, and then click OK.

    El control se agrega al cuadro de herramientas.The control is added to the Toolbox.

  4. Si el control no aparece en el cuadro de diálogo, haga lo siguiente:If your control is not listed in the dialog box, do the following:

    1. Haga clic en el botón Examinar.Click the Browse button.

    2. Vaya a la carpeta que contiene el archivo .dll que contiene el control.Browse to the folder that contains the .dll file that contains your control.

    3. Seleccione el archivo .dll y haga clic en Abrir.Select the .dll file and click Open.

      El control aparece en el cuadro de diálogo.Your control appears in the dialog box.

    4. Confirme que el control está seleccionado y, a continuación, haga clic en Aceptar.Confirm that your control is selected, and then click OK.

      El control se agrega al cuadro de herramientas.Your control is added to the Toolbox.

No se puede depurar el control de usuario de Windows Forms o un componenteCannot Debug the Windows Forms User Control or Component

Si el control se deriva de la UserControl (clase), puede depurar su comportamiento en tiempo de ejecución con el contenedor de prueba.If your control derives from the UserControl class, you can debug its run-time behavior with the test container. Para obtener más información, vea Cómo: Probar el comportamiento de tiempo de ejecución de una clase UserControl.For more information, see How to: Test the Run-Time Behavior of a UserControl.

Otros controles y componentes personalizados no son proyectos independientes.Other custom controls and components are not stand-alone projects. Deben hospedarse en una aplicación, como un proyecto de Windows Forms.They must be hosted by an application such as a Windows Forms project. Para depurar un control o componente, debe agregarlo a un proyecto de Windows Forms.To debug a control or component, you must add it to a Windows Forms project.

Para depurar un control o componenteTo debug a control or component

  1. Para compilar la solución, en el menú Compilar, haga clic en Compilar solución.From the Build menu, click Build Solution to build your solution.

  2. En el menú Archivo, elija Agregar y, luego, elija Nuevo proyecto para agregar un proyecto de prueba a la aplicación.From the File menu, choose Add, and then New Project to add a test project to your application.

  3. En el cuadro de diálogo Agregar nuevo proyecto, elija Aplicación de Windows como tipo de proyecto.In the Add New Project dialog box choose Windows Application for the type of project.

  4. En el Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias del nuevo proyecto.In Solution Explorer, right-click the References node for the new project. En el menú contextual, haga clic en Agregar referencia para agregar una referencia al proyecto que contiene el control o componente.On the shortcut menu, click Add Reference to add a reference to the project containing the control or component.

  5. Crear una instancia de un control o componente en el proyecto de prueba.Create an instance of your control or component in the test project. Si el componente está en el cuadro de herramientas, puede arrastrarlo a la superficie del diseñador o puede crear la instancia mediante programación, tal y como se muestra en el ejemplo de código siguiente.If your component is in the Toolbox, you can drag it to your designer surface, or you can create the instance programmatically, as shown in the following code example.

    Dim Component1 As New MyNeatComponent()  
    
    MyNeatComponent Component1 = new MyNeatComponent();  
    

    Ahora puede depurar el control o componente como de costumbre.You can now debug your control or component as usual.

Para obtener más información sobre la depuración, vea depuración en Visual Studio y Tutorial: Controles de depuración personalizado Windows Forms en tiempo de diseño.For more information about debugging, see Debugging in Visual Studio and Walkthrough: Debugging Custom Windows Forms Controls at Design Time.

El evento se genera dos veces en el control o el componente heredadoEvent Is Raised Twice in Inherited Control or Component

Probablemente se debe a una cláusula Handles duplicada.This is likely due to a duplicated Handles clause. Para obtener más información, consulte Solución de problemas de controladores de eventos heredados en Visual Basic.For more information, see Troubleshooting Inherited Event Handlers in Visual Basic.

Error en tiempo de diseño: "No se pudo crear el componente 'Nombre de componente'"Design-Time Error: "Failed to Create Component 'Component Name'"

El componente o el control deben proporcionar un constructor predeterminado sin parámetros.Your component or control must provide a default constructor with no parameters. Cuando el entorno de diseño crea una instancia de un componente o control, no intenta proporcionar ningún parámetro a las sobrecargas del constructor que toman parámetros.When the design environment creates an instance of your component or control, it does not attempt to provide any parameters to constructor overloads that take parameters.

STAThreadAttributeSTAThreadAttribute

El STAThreadAttribute informa a common language runtime (CLR) que Windows Forms utiliza el modelo de subprocesamiento controlado simple.The STAThreadAttribute informs the common language runtime (CLR) that Windows Forms uses the single-threaded apartment model. Podría observar un comportamiento imprevisto si no aplica este atributo al método Main de su aplicación de formularios Windows Forms.You may notice unintended behavior if you do not apply this attribute to your Windows Forms application's Main method. Por ejemplo, no pueden aparecer las imágenes de fondo para controles como ListView.For example, background images may not appear for controls like ListView. Algunos controles también pueden requerir este atributo para que los comportamientos de Autocompletar y arrastrar y colocar sean correctos.Some controls may also require this attribute for correct AutoComplete and drag-and-drop behavior.

El icono del componente no aparece en el cuadro de herramientasComponent Icon Does Not Appear in Toolbox

Cuando usas ToolboxBitmapAttribute para asociar un icono a su componente personalizado, el mapa de bits no aparece en el cuadro de herramientas para los componentes generados automáticamente.When you use ToolboxBitmapAttribute to associate an icon with your custom component, the bitmap does not appear in the Toolbox for autogenerated components. Para ver el mapa de bits, vuelva a cargar el control con el cuadro de diálogo Elegir elementos del cuadro de herramientas.To see the bitmap, reload the control by using the Choose Toolbox Items dialog box. Para obtener más información, vea Cómo: Proporcionar un mapa de bits del cuadro de herramientas para un Control.For more information, see How to: Provide a Toolbox Bitmap for a Control.

Vea tambiénSee also