2011-07-01 5 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'イベントハンドラで各コンテキストメニューを最初から作成して提示することです。私があなたの全体的な問題を解決したわけではありませんが、私が最初に尋ねた質問に正確に答えていることを考慮してください。 –