2011-07-01 43 views
1

我有以下代碼:C# - 的ContextMenuStrip奇怪的行爲

ContextMenuStrip cm1 = new ContextMenuStrip(); 
    ToolStripMenuItem item1 = new ToolStripMenuItem(); 
    ToolStripMenuItem item2 = new ToolStripMenuItem(); 
    cm1.Items.Add(item1); 
    cm1.Items.Add(item2); 
    ContextMenuStrip cm2 = new ContextMenuStrip(); 
    foreach(ToolStripMenuItem item in cm1.Items) 
    { 
    cm2.Items.Add(item); 
    } 

爲什麼會出現cm2.Items.Add()改變cm1.Items?他們是不同的(不同的散列碼)

感謝您的幫助

回答

0

菜單項可以在某一時刻只能有一個父。您的foreach循環只是將項目從cm1移動到cm2

+0

我需要一個默認的上下文菜單,我可以添加一些其他菜單項,具體取決於上下文。有沒有解決方法? – annA

+0

(但我還是謝謝你,它解釋了很多:) – annA

+0

如果你談論的是每個控制多個上下文菜單的配置,那麼你最好的選擇是從頭開始構建各自的上下文菜單中你'Click'事件處理程序,然後出示。請考慮一下,雖然我沒有解決你的整體問題,但我已經回答了你最初提出的問題。 –