Compartir a través de


Solución de problemas de creación de componentes y control

En este tema se enumeran los siguientes problemas comunes que surgen al desarrollar componentes y controles:

  • No se puede agregar control al cuadro de herramientas

  • No se puede depurar el control de usuario o componente de Windows Forms.

  • El evento se genera dos veces en un control o componente heredado.

  • Design-Time error: "No se pudo crear el componente 'Nombre del componente'"

  • STAThreadAttribute

  • El icono de componente no aparece en el cuadro de herramientas

No se puede agregar control al cuadro de herramientas

Si desea agregar un control personalizado que creó en otro proyecto o un control de terceros al Cuadro de herramientas, debe hacerlo manualmente. Si el proyecto actual contiene el control o el componente, debería aparecer automáticamente en el Cuadro de herramientas . Para obtener más información, vea Tutorial: Rellenar automáticamente el cuadro de herramientas con componentes personalizados.

Para agregar un control al cuadro de herramientas

  1. Haga clic con el botón derecho en el Cuadro de herramientas y, en el menú contextual, seleccione Elegir elementos.

  2. En el cuadro de diálogo Elegir elementos del cuadro de herramientas , agregue el componente :

    • Si desea agregar un componente o control de .NET Framework, haga clic en la pestaña Componentes de .NET Framework .

      –o–

    • Si desea agregar un componente COM o un control ActiveX, haga clic en la pestaña Componentes COM .

  3. Si el control aparece en el cuadro de diálogo, confirme que está seleccionado y, a continuación, haga clic en Aceptar.

    El control se agrega al cuadro de herramientas.

  4. Si el control no aparece en el cuadro de diálogo, haga lo siguiente:

    1. Haga clic en el botón Examinar .

    2. Vaya a la carpeta que contiene el archivo .dll que contiene su control.

    3. Seleccione el archivo .dll y haga clic en Abrir.

      El control aparece en el cuadro de diálogo.

    4. Confirme que el control está seleccionado y, a continuación, haga clic en Aceptar.

      Tu control se agrega al Cuadro de herramientas.

No se puede depurar el control de usuario o componente de Windows Forms.

Si su control deriva de la clase UserControl, se puede depurar su comportamiento en tiempo de ejecución con el contenedor de pruebas. Para obtener más información, vea How to: Test the Run-Time Behavior of a UserControl.

Otros controles y componentes personalizados no son proyectos independientes. Deben hospedarse en una aplicación como un proyecto de Windows Forms. Para depurar un control o componente, debe agregarlo a un proyecto de Windows Forms.

Para depurar un control o componente

  1. En el menú Compilar , haga clic en Compilar solución para compilar la solución.

  2. En el menú Archivo , elija Agregar y, a continuación, Nuevo proyecto para agregar un proyecto de prueba a la aplicación.

  3. En el cuadro de diálogo Agregar nuevo proyecto , elija Aplicación windows para el tipo de proyecto.

  4. En el Explorador de soluciones, haga clic con el botón derecho en el nodo Referencias del nuevo proyecto. En el menú contextual, haga clic en Agregar referencia para agregar una referencia al proyecto que contiene el control o el componente.

  5. Cree una instancia del control o componente en el proyecto de prueba. 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, como se muestra en el ejemplo de código siguiente.

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

    Ahora puede depurar su control o componente como de costumbre.

Para obtener más información sobre la depuración, consulte Depuración en Visual Studio y Guía paso a paso: Depuración de controles personalizados de formularios Windows Forms en tiempo de diseño.

El evento se genera dos veces en un control o componente heredado.

Esto es probable que se deba a una cláusula duplicada Handles . Para obtener más información, vea Solución de problemas de controladores de eventos heredados en Visual Basic.

Design-Time error: "No se pudo crear el componente 'Nombre del componente'"

El componente o el control deben proporcionar un constructor sin parámetros. Cuando el entorno de diseño crea una instancia del componente o control, no intenta proporcionar ningún parámetro a las sobrecargas de constructor que toman parámetros.

STAThreadAttribute

STAThreadAttribute informa al Common Language Runtime (CLR) de que Windows Forms usa el modelo de apartamento de subproceso único. Es posible que observe un comportamiento no deseado si no aplica este atributo al método de la Main aplicación de Windows Forms. Por ejemplo, es posible que las imágenes de fondo no aparezcan para controles como ListView. Algunos controles también pueden requerir este atributo para el comportamiento correcto de AutoCompletar y arrastrar y colocar.

El icono de componente no aparece en el cuadro de herramientas

Cuando se usa ToolboxBitmapAttribute para asociar un icono con el componente personalizado, el mapa de bits no aparece en el Cuadro de herramientas para los componentes generados automáticamente. Para ver el mapa de bits, vuelva a cargar el control mediante el cuadro de diálogo Elegir elementos del cuadro de herramientas . Para obtener más información, vea Cómo: Proporcionar un mapa de bits del cuadro de herramientas para un control.

Consulte también