我有一个工具条,其中包含一个ToolStripComboBox和一个ToolStripButton。我想给他们两个都添加一个ContextMenuStrip,但是我不能直接访问工具条或它的其他内容,所以我不能设置工具条的上下文菜单。
为ToolStripComboBox设置ContextMenuStrip很简单:
myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;但是ToolStripButton没有明显的等价物。如何向ToolStripButton添加ContextMenuStrip?
发布于 2009-11-21 15:46:38
杰夫·耶茨的建议应该是可行的。
但是,另一种选择是创建您自己的派生类(MyToolSTripButton、MyToolStripTextBox ...etc),为这些项提供一个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));
}
}
}发布于 2008-11-24 18:19:36
您需要将上下文菜单设置为ToolStrip,然后处理上下文菜单的弹出或相关事件,并测试鼠标所在的按钮,以确定是否应显示工具条的上下文菜单以及其中应包含的内容。
发布于 2008-11-12 09:35:17
这是因为ToolStripComboBox包含"System.Windows.Forms.ComboBox“控件,而"ToolStripButton”不包含"System.Windows.Forms.Control“。它的特殊工具条项目,它的按钮由toolstip维护。
你应该在toolstip上使用ContextMenu,或者你可以将dropdown添加到toolstripbutton项。
https://stackoverflow.com/questions/283417
复制相似问题