Pregunta

Tengo una tira de herramientas que contiene, entre otras cosas, un ToolStripComboBox y un ToolStripButton. Quiero agregar un ContextMenuStrip a ambos, pero no tengo acceso directo a la tira de herramientas u otros contenidos, por lo que no puedo configurar el menú contextual de la tira de herramientas.

Configurar ContextMenuStrip para ToolStripComboBox es fácil:

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

pero no hay un equivalente obvio para ToolStripButton. ¿Cómo agrego un ContextMenuStrip a un ToolStripButton?

¿Fue útil?

Solución

Lo que Jeff Yates ha sugerido debería funcionar.

Sin embargo, otra alternativa es crear sus propias clases derivadas (MyToolSTripButton, MyToolStripTextBox ... etc.) dar a estos elementos una propiedad ContextMenuStrip que puede establecer en el momento del diseño, y hacer que sus clases derivadas detecten el mouse derecho hacia abajo, o lo que sea otros eventos activarán la visualización del menú contextual.

Esto descarga todo el conocimiento necesario solo para aquellos elementos interesados.

A continuación se muestra uno de esos ejemplos usando ToolStripTextBox como elemento.

public class MyTextBox : ToolStripTextBox
{
    ContextMenuStrip _contextMenuStrip;

    public ContextMenuStrip ContextMenuStrip
    {
        get { return _contextMenuStrip; }
        set { _contextMenuStrip = value; }
    }

    protected override void OnMouseDown(MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            if (_contextMenuStrip !=null)
                _contextMenuStrip.Show(Parent.PointToScreen(e.Location));
        }
    }
}

Otros consejos

Deberá establecer el menú contextual en ToolStrip y luego manejar la ventana emergente del menú contextual o un evento relacionado y presionar probar qué botón se encuentra con el mouse para determinar si debe mostrar el menú contextual de ToolStrip y qué debería contener.

Es porque un ToolStripComboBox contiene " System.Windows.Forms.ComboBox " control, pero "ToolStripButton" no contiene " System.Windows.Forms.Control " ;. Su elemento especial de la tira de herramientas, cuyo botón es mantenido por toolstip.

Debe usar ContextMenu en toolstip o puede agregar un menú desplegable al elemento del botón de herramientas.

Buena pregunta. Es posible que pueda acceder a la tooltrip principal ( myToolStripButton.Parent o algo similar) y adjuntar el menú contextual allí.

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