Domanda

Ho una toolstrip contenente, tra le altre cose, ToolStripComboBox e ToolStripButton. Voglio aggiungere un ContextMenuStrip a entrambi, ma non ho accesso diretto alla toolstrip o ai suoi altri contenuti, quindi non posso impostare il menu contestuale della toolstrip.

L'impostazione di ContextMenuStrip per ToolStripComboBox è semplice:

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

ma non esiste un equivalente ovvio per ToolStripButton. Come faccio ad aggiungere un ContextMenuStrip a un ToolStripButton?

È stato utile?

Soluzione

Ciò che Jeff Yates ha suggerito dovrebbe funzionare.

Tuttavia, un'altra alternativa è quella di creare le proprie classi derivate (MyToolSTripButton, MyToolStripTextBox ... ecc.) assegnare a questi elementi una proprietà ContextMenuStrip che è possibile impostare in fase di progettazione e fare in modo che le classi derivate rilevino il tasto destro del mouse o altro altri eventi attiveranno la visualizzazione del menu contestuale.

Questo scarica tutte le conoscenze necessarie solo a quegli articoli interessati.

Di seguito è riportato uno di questi esempi che utilizza ToolStripTextBox come 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));
        }
    }
}

Altri suggerimenti

Dovrai impostare il menu di scelta rapida su ToolStrip e quindi gestire il popup del menu di scelta rapida o un evento correlato e premere test su quale pulsante si trova il mouse per determinare se è necessario mostrare il menu di scelta rapida di ToolStrip e cosa dovrebbe contenere.

È perché un ToolStripComboBox contiene " System.Windows.Forms.ComboBox " controllo, ma " ToolStripButton " non contiene " System.Windows.Forms.Control " ;. Il suo speciale oggetto toolstrip, il cui pulsante è gestito da tooltip.

Dovresti usare ContextMenu in tooltip oppure puoi aggiungere il menu a discesa all'elemento toolstripbutton.

Buona domanda. Potresti essere in grado di accedere al toolstrip ( myToolStripButton.Parent o qualcosa di simile) o allegare il menu contestuale lì

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top