如何添加项到/修改表单的默认上下文菜单

本文关键字:表单 修改 默认 菜单 上下文 何添加 添加 | 更新日期: 2023-09-27 18:12:08

解决方案:如何自定义Windows窗体的系统菜单?不管怎样,谢谢你的帮助:)







我想添加一个新的项目到一个表单的默认上下文菜单,它出现时右键单击顶部栏(其中最小化框和最大化框)。

我更喜欢用编程方式(而不是在设计器中)

我试过了

public Form1()
{
    InitializeComponent();
    this.ContextMenu.Add(new MenuItem("Test")); //->NullReferenceException
    this.ContextMenu = new ContextMenu(/*..*/); //-> Not what I want
}

这会导致NullReferenceException。如果我设置this.ContextMenu,它只影响当你右键单击进入表单时出现的上下文菜单,在这种情况下我不需要。

我希望有人能帮助我^^我知道这需要有可能,因为我已经在很多程序中看到它了

如何添加项到/修改表单的默认上下文菜单

微软的一个例子:

public partial class TextBoxContextMenuDemo : Form
{
    ContextMenu mnuContextDefault;
    ContextMenu mnuContextAlt;
    MenuItem mnuItmAltMenuTest;
    public TextBoxContextMenuDemo()
    {
        InitializeComponent();
        InitializeAltContextMenu();
    }
    private void InitializeAltContextMenu()
    {
        mnuContextDefault = new ContextMenu();
        mnuContextDefault = this.TextBox1.ContextMenu;
        mnuItmAltMenuTest = new MenuItem();
        mnuItmAltMenuTest.Index = -1;
        mnuItmAltMenuTest.Text = "Test Menu Item";
        mnuItmAltMenuTest.Click += new System.EventHandler(this.mnuItmAltMenuTest_Click);
        mnuContextAlt = new ContextMenu();
        mnuContextAlt.MenuItems.Add(mnuItmAltMenuTest);
    }
    private void TextBox1_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            if ((Control.ModifierKeys == Keys.Control))
            {
                this.TextBox1.ContextMenu = mnuContextAlt;
                TextBox1.ContextMenu.Show(TextBox1, new Point(e.X, e.Y));
            }
            else
            {
                this.TextBox1.ContextMenu = mnuContextDefault;
            }
        }
    }
    private void mnuItmAltMenuTest_Click(object sender, System.EventArgs e)
    {
        MessageBox.Show("You clicked the alternate test menu item!");
    }
}

可能是这些帮助

http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/how-to-customize-default-contextmenu-of-a-textbox-control-in/

是否可以获取和修改文本框的标准系统上下文菜单?