我有一个工具条,其中包含ToolStripComboBox和ToolStripButton。我想为它们添加一个ContextMenuStrip,但是我没有直接访问工具条或其他内容,因此我无法设置工具栏的上下文菜单。
为ToolStripComboBox设置ContextMenuStrip非常简单:
myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;
但ToolStripButton没有明显的等价物。如何将ContextMenuStrip添加到ToolStripButton?
答案 0 :(得分:4)
杰夫耶茨所建议的应该是有效的。
然而,另一种方法是创建自己的派生类(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));
}
}
}
答案 1 :(得分:2)
您需要将上下文菜单设置为ToolStrip,然后处理上下文菜单的弹出窗口或相关事件,并点击测试鼠标所在的按钮,以确定是否应显示ToolStrip的上下文菜单以及它应该是什么包含。
答案 2 :(得分:0)
这是因为ToolStripComboBox包含“System.Windows.Forms.ComboBox”控件,但“ToolStripButton”不包含“System.Windows.Forms.Control”。它的特殊工具条项目,其按钮由工具提示维护。
您应该在工具提示中使用ContextMenu,或者您可以向工具条按钮项添加下拉列表。
答案 3 :(得分:0)
好问题。您可以访问父toolstrip
(myToolStripButton.Parent
或类似的东西),并在其中附加上下文菜单。