簡體   English   中英

如何將ContextMenuStrip添加到ToolStripButton?

[英]How do I add a ContextMenuStrip to a ToolStripButton?

我有一個工具條,其中包括ToolStripComboBox和ToolStripButton。 我想向它們兩個都添加一個ContextMenuStrip,但是我無法直接訪問工具欄或其其他內容,因此無法設置工具欄的上下文菜單。

為ToolStripComboBox設置ContextMenuStrip很容易:

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

但是ToolStripButton沒有明顯的等效項。 如何將ContextMenuStrip添加到ToolStripButton?

傑夫·耶茨(Jeff Yates)提出的建議應該起作用。

但是,另一種替代方法是創建自己的派生類(MyToolSTripButton,MyToolStripTextBox等),為這些項目提供一個ContextMenuStrip屬性,您可以在設計時設置該屬性,並讓派生類檢測鼠標右鍵,或者其他任何事件觸發上下文菜單的顯示。

這將所有需要的知識轉移到僅那些感興趣的項目上。

下面是一個使用ToolStripTextBox作為項目的示例。

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

您需要將上下文菜單設置為ToolStrip,然后處理上下文菜單或相關事件的彈出窗口,然后點擊測試鼠標懸停在哪個按鈕上,以確定是否應顯示ToolStrip的上下文菜單及其應包含的內容。

這是因為ToolStripComboBox包含“ System.Windows.Forms.ComboBox”控件,但“ ToolStripButton”不包含“ System.Windows.Forms.Control”。 它的特殊工具條項,該按鈕由toolstip維護。

您應該在工具提示上使用ContextMenu,或者可以將下拉菜單添加到toolstripbutton項。

好問題。 您也許可以訪問父toolstrip myToolStripButton.ParentmyToolStripButton.Parent或類似的東西)並將上下文菜單附加在那里。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM