c# - 如何将 ContextMenuStrip 添加到 ToolStripButton?

标签 c# winforms contextmenustrip toolstripbutton

我有一个工具条,其中包含一个 ToolStripComboBox 和一个 ToolStripButton。我想向它们添加一个 ContextMenuStrip,但我无法直接访问工具条或其其他内容,因此无法设置工具条的上下文菜单。

为 ToolStripComboBox 设置 ContextMenuStrip 很简单:

myToolStripComboBox.ComboBox.ContextMenuStrip = myContextMenu;

但是 ToolStripButton 没有明显的等效项。如何将 ContextMenuStrip 添加到 ToolStripButton?

最佳答案

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

但是,另一种选择是创建您自己的派生类(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));
        }
    }
}

关于c# - 如何将 ContextMenuStrip 添加到 ToolStripButton?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/283417/

相关文章:

c# - 如何动态填充 TreeView (C#)

c# - Form1一直显示

vb.net - 根据不同对象的状态更改 contextMenuStrip

c# - ContextMenuStrip 中的 TextBox 离开事件未触发

c# - 在静态方法中使用其他方法

c# - 保存/加载数据 Android 设备、Unity、C#

c# - 在 winform 中获取控件以禁用它们

c# - 向我的应用程序添加服务层

c# - IXmlSerializable 和 XmlRootAttribute

c# - 如何使用按钮单击来切换 ContextMenuStrip 显示,同时允许它正常关闭(菜单项单击、失去焦点等)