Solución de problemas relacionados con la creación de controles y componentes

En este tema se señalan los siguientes problemas comunes que surgen cuando se desarrollan componentes y controles:

  • No se puede agregar el control al cuadro de herramientas

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

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

  • Error en tiempo de diseño: "Error al crear el componente 'nombre de componente'"

  • STAThreadAttribute

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

No se puede agregar el 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 componente, debería aparecer en el cuadro de herramientas automáticamente. 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 de cuadro de herramientas, agregue el componente:

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

      -O bien-

    • 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 el 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.

      El control se agrega al cuadro de herramientas.

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

Si el control deriva de la clase UserControl, puede depurar su comportamiento en tiempo de ejecución con el contenedor de prueba. Para más información, consulte Cómo: Comprobar el comportamiento de un control de usuario en tiempo de ejecución.

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. Para compilar la solución, en el menú Compilar, haga clic en Compilar solución.

  2. En el menú Archivo, elija Agregar y, luego, elija 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 de Windows como 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 componente.

  5. Crear una instancia de un 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, tal y como se muestra en el ejemplo de código siguiente.

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

    Ahora puede depurar el control o componente como de costumbre.

Para obtener más información acerca de la depuración, consulte Depuración en Visual Studio y Tutorial: Depurar controles personalizados de Windows Forms en tiempo de diseño.

El evento se genera dos veces en el control o el componente heredado

Probablemente se debe a una cláusula Handles duplicada. Para obtener más información, consulte Solución de problemas de controladores de eventos heredados en Visual Basic.

Error en tiempo de diseño: "Error al crear el componente 'nombre de componente'"

El componente o el control deben proporcionar un constructor sin parámetros. 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.

STAThreadAttribute

STAThreadAttribute informa a Common Language Runtime (CLR) de que Windows Forms utiliza el modelo de contenedor uniproceso. Podría observar un comportamiento imprevisto si no aplica este atributo al método Main de su aplicación de formularios Windows Forms. Por ejemplo, puede que no aparezcan las imágenes de fondo de controles como ListView. Algunos controles también pueden requerir este atributo para que los comportamientos de Autocompletar y arrastrar y colocar sean correctos.

El icono del componente no aparece en el cuadro de herramientas

Cuando se usa ToolboxBitmapAttribute para asociar un icono a su componente personalizado, el mapa de bits no aparece en el cuadro de herramientas de los componentes generados automáticamente. Para ver el mapa de bits, vuelva a cargar el control con 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.

Vea también