[英]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.Parent
( myToolStripButton.Parent
或類似的東西)並將上下文菜單附加在那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.