Creación de un control de cuadro de herramientas de Windows Forms
La plantilla de elementos del 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 del 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 se pueda distribuir a otros usuarios.
Creación del control de cuadro de herramientas
La plantilla de 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.
Creación de una extensión con un control del cuadro de herramientas de Windows Forms
Cree un proyecto de VSIX denominado
MyWinFormsControl
. Puede encontrar la plantilla de proyecto VSIX en el cuadro de diálogo Nuevo proyecto; para ello, busque "vsix".Cuando se abra el proyecto, agregue una plantilla de elementos de control del cuadro de herramientas de Windows Forms denominada
Counter
. En el Explorador de soluciones, 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 del cuadro de herramientas de Windows Forms.Esto agrega un control de usuario, un RegistrationAttribute
ProvideToolboxControlAttribute
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: una Label para mostrar el recuento actual y un Button para restablecer el recuento a 0. No se necesitan más controles secundarios, dado que los llamadores incrementarán el contador mediante programación.
Para crear la interfaz de usuario
En el Explorador de soluciones, haga doble clic en Counter.cs para abrirlo en el diseñador.
Quite el botón Haga clic aquí que se incluye de forma predeterminada al agregar la plantilla de elementos de control del cuadro de herramientas de Windows Forms.
En el Cuadro de herramientas, arrastre un control
Label
y, a continuación, un controlButton
situado debajo de él a la superficie de diseño.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.
En la ventana Propiedades, establezca los siguientes valores para los controles de la superficie de diseño.
Control Propiedad valor Label1
Texto "" Button1
Nombre btnReset Button1
Texto Reset
Codificación del control de usuario
El control Counter
presentará un método para incrementar el contador, un evento que se desencadenará cuando el contador se incremente, un botón Restablecer y tres propiedades para almacenar el recuento actual, el texto para mostrar y si se debe mostrar u ocultar el botón Restablecer. El atributo ProvideToolboxControl
determina la ubicación del Cuadro de herramientas donde se mostrará el control Counter
.
Para codificar el control de usuario
Haga doble clic en el formulario para abrir su controlador de eventos de carga en la ventana de código.
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;
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 llamadores pueden acceder a estas propiedades para obtener y establecer el texto para mostrar del contador y mostrar u ocultar el botón Restablecer. Los llamadores pueden obtener el valor actual de la propiedad
Value
de solo lectura, pero no pueden establecer el valor directamente.Coloque el código siguiente en el evento
Load
para el control .private void Counter_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; }
Establecer el texto Etiqueta en el evento Load permite que las propiedades de destino se carguen antes de que se apliquen sus valores. Si se establece el texto Etiqueta en el constructor, se producirá una etiqueta vacía.
Cree el siguiente método público para incrementar el contador.
public void Increment() { currentValue++; label1.Text = displayText + Value; Incremented(this, EventArgs.Empty); }
Agregue una declaración para el evento
Incremented
a la clase de control.public event EventHandler Incremented;
Los llamadores pueden agregar controladores a este evento para responder a los cambios en el valor del contador.
Vuelva a la vista de diseño y haga doble clic en el botón Restablecer para generar el controlador del evento
btnReset_Click
. A continuación, rellénelo como se muestra en el ejemplo siguiente.private void btnReset_Click(object sender, EventArgs e) { currentValue = 0; label1.Text = displayText + Value; }
Justo encima de la definición de clase en la declaración de atributos de
ProvideToolboxControl
, cambie el valor del primer parámetro de"MyWinFormsControl.Counter"
a"General"
. Se establece el nombre del grupo de elementos que va a hospedar el control en el Cuadro de herramientas.En el ejemplo siguiente se muestra el atributo
ProvideToolboxControl
y la definición de clase ajustada.[ProvideToolboxControl("General", false)] public partial class Counter : UserControl
Prueba del control
Para probar un control del Cuadro de herramientas , pruébelo primero en el entorno de desarrollo y, luego, vuelva a probarlo en una aplicación compilada.
Para probar el control
Pulse F5 para iniciar la depuración.
Este comando compila el proyecto y abre una segunda instancia experimental de Visual Studio que tiene el control instalado.
En la instancia experimental de Visual Studio, cree un proyecto de aplicación de Windows Forms.
En el Explorador de soluciones, haga doble clic en Form1.cs para abrirlo en el diseñador, si no está ya abierto.
En el Cuadro de herramientas, el control
Counter
debe mostrarse en la sección General.Arrastre un control
Counter
al formulario y selecciónelo. Las propiedadesValue
,Message
yShowReset
se mostrarán en la ventana Propiedades, junto con las propiedades que se heredan de UserControl.Establezca la propiedad
Message
enCount:
.Arrastre un control Button al formulario y establezca las propiedades de nombre y texto del botón en
Test
.Haga doble clic en el botón para abrir Form1.cs en la vista de código y cree un controlador de clics.
En el controlador de clics, llame a
counter1.Increment()
.En la función del constructor, después de la llamada a
InitializeComponent
, escribacounter1``.``Incremented +=
y, a continuación, pulse la tecla Tab dos veces.Visual Studio genera un controlador de nivel de formulario para el evento
counter1.Incremented
.Resalte la instrucción
Throw
en el controlador de eventos, escribambox
y pulse Tab dos veces para generar un cuadro de mensaje desde el fragmento de código mbox.En la línea siguiente, agregue el siguiente bloque
if
/else
para establecer la visibilidad del botón Restablecer.if (counter1.Value < 5) counter1.ShowReset = false; else counter1.ShowReset = true;
Presiona F5.
Se abre el formulario. El control
Counter
muestra el siguiente texto.Recuento: 0
Seleccione Probar.
El contador se incrementa y Visual Studio muestra un cuadro de mensaje.
Cierre el cuadro del mensaje.
El botón Restablecer desaparece.
Seleccione Probar hasta que el contador alcance 5, cerrando los cuadros de mensaje cada vez.
Vuelve a aparecer el botón Restablecer.
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. Para implementar el control cargando el archivo .vsix en una red o un sitio web. Cuando un usuario abre el archivo .vsix, el control se instala y se agrega al Cuadro de herramientas de Visual Studio en el equipo del usuario. Como alternativa, puede cargar el archivo .vsix en Visual Studio Marketplace para que los usuarios puedan encontrarlo navegando en el cuadro de diálogo Herramientas>Extensiones y actualizaciones.