Crear un control del cuadro de herramientas de Formularios 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 (VS SDK), le permite crear un control 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 cuadro de herramientas
La plantilla Control del cuadro de herramientas de Windows Forms crea un control de usuario indefinido y proporciona toda la funcionalidad necesaria para agregar el control al cuadro de herramientas.
Crear una extensión con un control cuadro de herramientas de Windows Forms
Cree un proyecto 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 elemento 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
ProvideToolboxControlAttribute
RegistrationAttribute 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 Counter
control 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 autores de llamadas incrementarán el contador mediante programación.
Para crear la interfaz de usuario
En Explorador de soluciones, haga doble clic en Counter.cs para abrirlo en el diseñador.
Quite el botón Hacer clic aquí ! que se incluye de forma predeterminada al agregar la plantilla de elemento Control del cuadro de herramientas de Windows Forms.
En el Cuadro de herramientas, arrastre un
Label
control y, a continuación, unButton
control 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 Restablecer
Codificar el control de usuario
El Counter
control 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 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 autores de llamadas pueden acceder a estas propiedades para obtener y establecer el texto para mostrar del contador y mostrar u ocultar el botón Restablecer . Los autores de llamadas pueden obtener el valor actual de la propiedad de solo
Value
lectura, pero no pueden establecer el valor directamente.Coloque el código siguiente en el
Load
evento para el control .private void Counter_Load(object sender, EventArgs e) { currentValue = 0; label1.Text = Message + Value; }
Establecer el texto etiqueta en el Load evento 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
Incremented
evento a la clase de control.public event EventHandler Incremented;
Los autores de llamadas 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 de
btnReset_Click
eventos. 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; }
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 Cuadro de herramientas , pruebelo primero en el entorno de desarrollo y, a continuación, pruebelo en una aplicación compilada.
Para probar el control
Presione F5 para iniciar la depuración.
Este comando compila el proyecto y abre una segunda instancia experimental de Visual Studio que tiene instalado el control .
En la instancia experimental de Visual Studio, cree un proyecto de aplicación de Windows Forms.
En Explorador de soluciones, haga doble clic en Form1.cs para abrirlo en el diseñador si aún no está abierto.
En el Cuadro de herramientas, el
Counter
control debe mostrarse en la sección General .Arrastre un
Counter
control al formulario y selecciónelo. LasValue
propiedades ,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 Button control 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 crear un controlador de clics.
En el controlador de clics, llame a
counter1.Increment()
.En la función constructora, después de la llamada a
InitializeComponent
, escribacounter1``.``Incremented +=
y presione Tab dos veces.Visual Studio genera un controlador de nivel de formulario para el
counter1.Incremented
evento.Resalte la
Throw
instrucción en el controlador de eventos, escribambox
y presione Tab dos veces para generar un cuadro de mensaje desde el fragmento de código mbox.En la línea siguiente, agregue el siguiente
if
/else
bloque para establecer la visibilidad del botón Restablecer .if (counter1.Value < 5) counter1.ShowReset = false; else counter1.ShowReset = true;
Presione F5.
Se abre el formulario. El
Counter
control muestra el texto siguiente.Recuento: 0
Seleccione Probar.
Los incrementos de contador y Visual Studio muestran un cuadro de mensaje.
Cierre el cuadro de 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. 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 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 Extensiones de herramientas>y Novedades.