はじめまして。私は今、C#のサンプルプログラムをいろいろ試しています。
フォームにメニューを表示する際、
System.Windows.Formsの
MenuメンバにMainMenuクラスを設定すればメインメニュー、
ContextMenuメンバにContextMenuクラスを設定すれば右クリックメニューになりまし
た。
あまり無いケースですが、メインメニューとコンテキストメニューを共通化するには
どのように行えばよいのでしょうか?
現状はフォームのコンストラクタで以下のように行っています。
MenuItem M1 = new MenuItem();
M1.Text = サブメニューあり;
MenuItem M2 = new MenuItem();
M2.Text = 終了;
M2.Click += new EventHandler(this.menuExit_Click);
MenuItem MS1 = new MenuItem();
MS1.Text = サブメニュー1;
MenuItem MS2 = new MenuItem();
MS2.Text = サブメニュー2;
M1.MenuItems.Add(MS1);
M1.MenuItems.Add(MS2);
MainMenu MMenu = new MainMenu();
MMenu.MenuItems.Add(M1);
MMenu.MenuItems.Add(M2);
this.Menu = MMenu;
ContextMenu CM = new ContextMenu();
// CM.MenuItems = MMenu.MenuItems.CloneMenu();//コンパイルエラー
for(int i = 0;i < MMenu.MenuItems.Count;i++)
{
CM.MenuItems.Add(MMenu.MenuItems[i].CloneMenu());
}
せっかく同じMenu.MenuItemCollectionクラスなので、上記コードのコメント部分のよう
に、シンプルにコピーできないかと思っているのですが、何かもっと良い方法はないの
でしょうか?
ご教授よろしくお願いします。
環境
OS WindowsXP
ソフト SharpDevelop(C#)
FrameWork 1.1