Establecer el icono de un control en el Cuadro de herramientas (Windows Forms .NET)

Los controles que cree siempre reciben un icono genérico para la ventana Cuadro de herramientas en Visual Studio. Sin embargo, al cambiar el icono, agrega una sensación de profesionalidad a su control y hace que destaque en el cuadro de herramientas. En este artículo se explica cómo establecer el icono del control.

Importante

La documentación de la guía de escritorio para .NET 7 y .NET 6 está en proceso de elaboración.

Icono de mapa de bits

Los iconos de la ventana Cuadro de herramientas de Visual Studio deben cumplir ciertos estándares; de lo contrario, se omiten o se muestran incorrectamente.

  • Tamaño: los iconos de un control deben ser una imagen de mapa de bits de 16x16.
  • Tipo de archivo: el icono puede ser un mapa de bits (.bmp) o un archivo icono de Windows (.ico).
  • Transparencia: el color magenta (RGB: 255,0,255, Hexadecimal: 0xFF00FF) se representa de forma transparente.
  • Temas: Visual Studio tiene varios temas, pero cada tema se considera oscuro o claro. El icono debe diseñarse para el tema claro. Cuando Visual Studio usa un tema oscuro, los colores oscuros y claros del icono se invierten automáticamente.

Cómo asignar un icono

Los iconos se asignan al control con el atributo ToolboxBitmapAttribute. Para obtener más información sobre los atributos, vea Atributos (C#) o Información general sobre los atributos (Visual Basic).

El atributo se establece en la clase del control y tiene tres constructores diferentes:

  • ToolboxBitmapAttribute(Type)—Este constructor toma una sola referencia de tipo y, de ese tipo, intenta encontrar un recurso incrustado que se va a usar como icono.

    El valor FullName del tipo se usa para intentar buscar un recurso incrustado correspondiente en función del nombre del tipo. Por ejemplo, si se hace referencia al tipo MyProject.MyNamespace.CompassRose, el atributo busca un recurso denominado MyProject.MyNamespace.CompassRose.bmp o MyProject.MyNamespace.CompassRose.ico. Si se encuentra el recurso, se usa como icono del control.

    // Looks for a CompassRose.bmp or CompassRose.ico embedded resource in the
    // same namespace as the CompassRose type.
    [ToolboxBitmap(typeof(CompassRose))]
    public partial class CompassRose : UserControl
    {
        // Code for the control
    }
    
    ' Looks for a CompassRose.bmp or CompassRose.ico embedded resource in the
    ' same namespace as the CompassRose type.
    <ToolboxBitmap(GetType(CompassRose))>
    Public Class CompassRose
        ' Code for the control
    End Class
    
  • ToolboxBitmapAttribute(Type, String)—Este constructor toma dos parámetros. El primer parámetro es un tipo y el segundo es el espacio de nombres y el nombre del recurso en el ensamblado de ese tipo.

    // Loads the icon from the WinFormsApp1.Resources.CompasRoseIcon.bmp resource
    // in the assembly containing the type CompassRose
    [ToolboxBitmap(typeof(CompassRose), "WinFormsApp1.Resources.CompasRoseIcon.bmp")]
    public partial class CompassRose : UserControl
    {
        // Code for the control
    }
    
    ' Loads the icon from the WinFormsApp1.Resources.CompasRoseIcon.bmp resource
    ' in the assembly containing the type CompassRose
    <ToolboxBitmap(GetType(CompassRose), "WinFormsApp1.Resources.CompasRoseIcon.bmp")>
    Public Class CompassRose
        ' Code for the control
    End Class
    
  • ToolboxBitmapAttribute(String)—Este constructor toma un único parámetro de cadena, la ruta de acceso absoluta al archivo de icono.

    // Loads the icon from a file on disk
    [ToolboxBitmap(@"C:\Files\Resources\MyIcon.bmp")]
    public partial class CompassRose : UserControl
    {
        // Code for the control
    }
    
    ' Loads the icon from a file on disk
    <ToolboxBitmap("C:\Files\Resources\MyIcon.bmp")>
    Public Class CompassRose
        ' Code for the control
    End Class