Pregunta

Estoy agregando mediante programación elementos ToolStripButton a un menú contextual.

Esa parte es fácil.

this.tsmiDelete.DropDownItems.Add("The text on the item.");

Sin embargo, también necesito conectar los eventos para que cuando el usuario haga clic en el elemento, ¡algo realmente suceda!

¿Cómo hago esto?El método que maneja el clic también necesita recibir algún tipo de identificación u objeto relacionado con el ToolStripButton particular en el que el usuario hizo clic.

¿Fue útil?

Solución

¿No podrías simplemente suscribirte al evento Click?Algo como esto:

ToolStripButton btn = new ToolStripButton("The text on the item.");
this.tsmiDelete.DropDownItems.Add(btn);
btn.Click += new EventHandler(OnBtnClicked);

Y OnBtnClicked se declararía así:

private void OnBtnClicked(object sender, EventArgs e)
{
    ToolStripButton btn = sender as ToolStripButton;

    // handle the button click
}

El remitente debe ser ToolStripButton, para que puedas transmitirlo y hacer lo que necesites con él.

Otros consejos

Gracias por tu ayuda con eso Andy.¡Mi único problema ahora es que AutoSize no funciona en los ToolStripButtons que estoy agregando!Son todos demasiado estrechos.

Es bastante extraño porque estaba funcionando antes.


Actualizar:Definitivamente hay algún problema con AutoSize para los ToolStripButtons creados mediante programación.Sin embargo, encontré una solución:

  1. Cree el botón ToolStrip.
  2. Cree un control de etiqueta y configure las propiedades de fuente para que coincidan con su botón.
  3. Configure el texto de la etiqueta para que coincida con su botón.
  4. Establezca la etiqueta en Tamaño automático.
  5. Lea el ancho de la etiqueta y utilícelo para establecer el ancho del ToolStripButton.

Es complicado, pero funciona.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top