首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向ToolStripButton添加ContextMenuStrip?

如何向ToolStripButton添加ContextMenuStrip?
EN

Stack Overflow用户
提问于 2008-11-12 09:27:30
回答 4查看 10.2K关注 0票数 2

我有一个工具条,其中包含一个ToolStripComboBox和一个ToolStripButton。我想给他们两个都添加一个ContextMenuStrip,但是我不能直接访问工具条或它的其他内容,所以我不能设置工具条的上下文菜单。

为ToolStripComboBox设置ContextMenuStrip很简单:

代码语言:javascript
复制
myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

但是ToolStripButton没有明显的等价物。如何向ToolStripButton添加ContextMenuStrip?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-11-21 15:46:38

杰夫·耶茨的建议应该是可行的。

但是,另一种选择是创建您自己的派生类(MyToolSTripButton、MyToolStripTextBox ...etc),为这些项提供一个ContextMenuStrip属性,您可以在设计时设置该属性,并让您的派生类检测鼠标右键按下,或任何其他将触发上下文菜单显示的事件。

这将卸载仅对那些感兴趣的项目所需的任何知识。

下面是使用ToolStripTextBox作为项目的一个这样的示例。

代码语言:javascript
复制
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));
        }
    }
}
票数 4
EN

Stack Overflow用户

发布于 2008-11-24 18:19:36

您需要将上下文菜单设置为ToolStrip,然后处理上下文菜单的弹出或相关事件,并测试鼠标所在的按钮,以确定是否应显示工具条的上下文菜单以及其中应包含的内容。

票数 2
EN

Stack Overflow用户

发布于 2008-11-12 09:35:17

这是因为ToolStripComboBox包含"System.Windows.Forms.ComboBox“控件,而"ToolStripButton”不包含"System.Windows.Forms.Control“。它的特殊工具条项目,它的按钮由toolstip维护。

你应该在toolstip上使用ContextMenu,或者你可以将dropdown添加到toolstripbutton项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/283417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档