Compartir a través de


Crear un control de la caja de herramientas de Windows Forms

La plantilla de elemento Control del cuadro de herramientas de Windows Forms que se incluye en las Herramientas de extensibilidad de Visual Studio (VSSDK), le permite crear un control de Cuadro de herramientas que se agrega automáticamente cuando se instala la extensión. En este tutorial se muestra cómo usar la plantilla para crear un control de contador simple que puede distribuir a otros usuarios.

Crear el control de la caja de herramientas

La plantilla Control de cuadro de herramientas de Windows Forms crea un control de usuario no definido y proporciona todas las funciones necesarias para agregar el control al Cuadro de herramientas.

Crear una extensión con un Control de cuadro de Herramientas de Windows Forms

  1. Cree un proyecto VSIX denominado MyWinFormsControl. Puede encontrar la plantilla de proyecto VSIX en el cuadro de diálogo Nuevo proyecto, buscando "vsix".

  2. Cuando se abra el proyecto, agregue una plantilla de elemento Control del cuadro de herramientas de Windows Forms denominada Counter. En el Explorador de Soluciones de , haga clic con el botón derecho en el nodo del proyecto y seleccione Agregar>Nuevo Elemento. En el cuadro de diálogo Agregar nuevo elemento, vaya a Visual C#>Extensibilidad y seleccione Control de cuadro de herramientas de Windows Forms

  3. Esto agrega un control de usuario, un ProvideToolboxControlAttributeRegistrationAttribute para colocar el control en el cuadro de herramientas, y una entrada de recurso Microsoft.VisualStudio.ToolboxControl en el manifiesto VSIX para la implementación.

Creación de una interfaz de usuario para el control

El control Counter requiere dos controles secundarios: un Label para mostrar el recuento actual y un Button para restablecer el recuento a 0. No se requieren otros controles secundarios porque los que llaman incrementarán el contador programáticamente.

Para construir la interfaz de usuario

  1. En Explorador de soluciones, haga doble clic en Counter.cs para abrirlo en el diseñador.

  2. Quite el botón Haga clic aquí que se incluye de forma predeterminada al agregar la plantilla de elemento Control del cuadro de herramientas de Windows Forms.

  3. Desde el cuadro de herramientas de , arrastre un control Label y, a continuación, un control Button debajo de él a la superficie de diseño.

  4. Cambie el tamaño del control de usuario general a 150, 50 píxeles y cambie el tamaño del control de botón a 50, 20 píxeles.

  5. En la ventana propiedades , establezca los siguientes valores para los controles de la superficie de diseño.

    Control Propiedad Valor
    Label1 Texto ""
    Button1 Name btnReset
    Button1 Texto Reiniciar

Codificar el control de usuario

El control Counter expondrá un método para incrementar el contador, un evento que se generará cada vez que se incremente el contador, un botón Restablecer y tres propiedades para almacenar el recuento actual, el texto para mostrar y si se va a mostrar u ocultar el botón Restablecer . El atributo ProvideToolboxControl determina dónde aparecerá el control Counter en el cuadro de herramientas .

Para codificar el control de usuario

  1. Haga doble clic en el formulario para abrir su controlador de eventos de carga en la ventana de código.

  2. Encima del método del controlador de eventos, en la clase de control, cree un entero para almacenar el valor del contador y una cadena para almacenar el texto para mostrar, tal como se muestra en el ejemplo siguiente.

    int currentValue;
    string displayText;
    
  3. Cree las siguientes declaraciones de propiedad pública.

    public int Value {
        get { return currentValue; }
    }
    
    public string Message {
        get { return displayText; }
        set { displayText = value; }
    }
    
    public bool ShowReset {
        get { return btnReset.Visible; }
        set { btnReset.Visible = value; }
    }
    
    

    Los agentes de llamadas pueden acceder a estas propiedades para obtener y establecer el texto que se muestra en el contador y para mostrar u ocultar el botón Restablecer. Los agentes de llamadas pueden obtener el valor actual de la propiedad de solo lectura Value, pero no pueden establecer el valor directamente.

  4. Coloque el siguiente código en el evento Load del control.

    private void Counter_Load(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = Message + Value;
    }
    
    

    Configurar el texto de la etiqueta en el evento Load permite que las propiedades de destino se carguen antes de aplicar sus valores. Si se establece el texto de la etiqueta en el constructor, se produciría una etiqueta vacía .

  5. Cree el siguiente método público para incrementar el contador.

    public void Increment()
    {
        currentValue++;
        label1.Text = displayText + Value;
        Incremented(this, EventArgs.Empty);
    }
    
    
  6. Agregue una declaración para el evento Incremented a la clase de control.

    public event EventHandler Incremented;
    

    Los llamantes pueden agregar controladores a este evento para responder a los cambios en el valor del contador.

  7. Vuelva a la vista de diseño y haga doble clic en el botón Restablecer para generar el controlador de eventos btnReset_Click. A continuación, llene como se muestra en el ejemplo siguiente.

    private void btnReset_Click(object sender, EventArgs e)
    {
        currentValue = 0;
        label1.Text = displayText + Value;
    }
    
    
  8. Inmediatamente encima de la definición de clase, en la declaración de atributo ProvideToolboxControl, cambie el valor del primer parámetro de "MyWinFormsControl.Counter" a "General". Establece el nombre del grupo de elementos que hospedará el control en el cuadro de herramientas de .

    En el ejemplo siguiente se muestra el atributo ProvideToolboxControl y la definición de clase ajustada.

    [ProvideToolboxControl("General", false)]
    public partial class Counter : UserControl
    

Probar el control

Para probar un control del Cuadro de herramientas, pruébelo primero en el entorno de desarrollo y luego pruébelo en una aplicación compilada.

Para probar el control

  1. Presione F5 para Iniciar depuración.

    Este comando compila el proyecto y abre una segunda instancia experimental de Visual Studio que tiene instalado el control .

  2. En la instancia experimental de Visual Studio, cree un proyecto Aplicación de Windows Forms.

  3. En Explorador de soluciones, haga doble clic en Form1.cs para abrirlo en el diseñador si aún no está abierto.

  4. En el cuadro de herramientas , el control Counter debe mostrarse en la sección General .

  5. Arrastre un control Counter al formulario y selecciónelo. Las propiedades Value, Messagey ShowReset se mostrarán en la ventana Propiedades, junto con las propiedades heredadas de UserControl.

  6. Establezca la propiedad Message en Count:.

  7. Arrastre un control Button al formulario y establezca las propiedades de nombre y texto del botón en Test.

  8. Haga doble clic en el botón para abrir Form1.cs en la vista de código y crear un controlador de clics.

  9. En el controlador de clics, llame a counter1.Increment().

  10. En la función constructora, después de la llamada a InitializeComponent, escriba counter1``.``Incremented += y presione Tab dos veces.

    Visual Studio genera un controlador de nivel de formulario para el evento counter1.Incremented.

  11. Resalte la instrucción Throw en el controlador de eventos, escriba mboxy presione Tab dos veces para generar un cuadro de mensaje desde el fragmento de código de mbox.

  12. En la línea siguiente, agregue el siguiente bloque if/else para establecer la visibilidad del botón Restablecer de.

    if (counter1.Value < 5) counter1.ShowReset = false;
    else counter1.ShowReset = true;
    
  13. Presione F5.

    Se abre el formulario. El control Counter muestra el texto siguiente.

    Recuento: 0

  14. Seleccione Prueba.

    El contador se incrementa y Visual Studio muestra un cuadro de mensaje.

  15. Cierre el cuadro de mensaje.

    El botón Restablecer desaparece.

  16. Seleccione Prueba hasta que el contador alcance 5, cerrando los cuadros de mensaje cada vez.

    El botón Restablecer vuelve a aparecer.

  17. Seleccione Restablecer.

    El contador se restablece a 0.

Pasos siguientes

Cuando se crea un control del Cuadro de herramientas, Visual Studio crea un archivo denominado NombreDelProyecto.vsix en la carpeta \bin\debug\ del proyecto. Puede implementar el control cargando el archivo .vsix en una red o en un sitio web. Cuando un usuario abre el archivo .vsix, el control se instala y agrega al cuadro de herramientas de Visual Studio en el equipo del usuario. Como alternativa, puede cargar el archivo de .vsix en Visual Studio Marketplace para que los usuarios puedan encontrarlo navegando en el cuadro de diálogo Herramientas>Extensiones y actualizaciones.