2015-09-09 56 views
0

解决方法在这里找到:How can I customize the system menu of a Windows Form?。无论如何,感谢您的帮助:)







我想一个新的项目添加到窗体的文本菜单默认,当右顶栏上点击的出现(其中最小化框和最大化箱是)。如何添加项目/修改窗体默认情境菜单

我也宁愿把它编程方式(而不是在设计师)

我已经试过这

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

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

我希望有人能帮助我^^我知道这需要可不知何故,因为我已经在很多项目中看到它已经

+1

你应该在这里展示更多的代码,所以我们可以看到问题出在哪里。也许你在错误的地方使用this.ContextMenu,请显示你的代码。 – Jack1987

+0

@ Jack1987我编辑它;) – Stefan

回答

0

这里有一个例子微软:

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!"); 
    } 
} 
+0

谢谢你的快速回复:)我已经测试过,但是不适合我。它在'mnuContextDefault = this.ContextMenu;'抛出一个NullReferenceException,这实际上是我的问题。我如何访问那个?就像如果你右键单击表格的左上角 – Stefan

相关问题