2015-09-09 60 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

相關問題