Frage

Ich habe einen Toolstrip enthält, unter anderem, ein ToolStripComboBox und ein Toolstripbutton. Ich möchte ein Context für beide von ihnen hinzuzufügen, aber ich habe keinen direkten Zugriff auf den Toolstrip oder dessen andere Inhalte, also kann ich das Kontextmenü des Toolstrip nicht festgelegt.

für die ToolStripComboBox der Context Einstellung ist einfach:

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

, aber es gibt keine offensichtliche Entsprechung für die Toolstripbutton. Wie füge ich ein Context zu einem Toolstripbutton?

War es hilfreich?

Lösung

Was Jeff Yates hat vorgeschlagen, funktionieren sollte.

Jedoch ist eine andere Alternative ist, Ihre eigenen abgeleiteten Klassen (MyToolSTripButton, MyToolStripTextBox ... usw.) geben diese Elemente eine Context Eigenschaft erstellen, die Sie zur Design-Zeit einstellen können, und haben Ihre abgeleiteten Klassen erkennen die rechte Maus nach unten, oder was auch immer andere Veranstaltungen werden die Anzeige des Kontextmenüs auslösen.

Dieses auslagert eine der Kenntnisse benötigt, um nur diese Elemente interessiert.

Im Folgenden ist ein solches Beispiel mit ToolStripTextBox als das Element.

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));
        }
    }
}

Andere Tipps

Sie müssen das Kontextmenü auf dem Toolstrip setzen und dann das Popup des Kontextmenüs zu behandeln oder einem verwandten Ereignis und drücken Test die Taste der Maus über, um zu bestimmen, ob Sie die Toolstrip über das Kontextmenü zeigen sollte und was es sein sollte enthalten.

Es ist, weil ein ToolStripComboBox „System.Windows.Forms.ComboBox“ -Steuerung enthält, aber „Toolstripbutton“ nicht enthält „System.Windows.Forms.Control“. Seine besondere Toolstrip Artikel, die Taste ist aufrechterhalten durch toolstip.

Sie sollten ContextMenu auf toolstip verwenden, oder Sie können Drop-Down-Artikel in der Toolstripbutton.

Gute Frage. Sie könnten in der Lage sein, den Zugang zu dem übergeordneten toolstrip zu bekommen (myToolStripButton.Parent oder etwas ähnliches) und befestigen Sie das Kontextmenü gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top