これは非常に基本的なコードです。フォームのコンストラクタに入れ、次のコード:
var contextMenu = new ContextMenu();
contextMenu.MenuItems.Add(new MenuItem("New"));
contextMenu.MenuItems.Add(new MenuItem("Close"));
this.ContextMenu = contextMenu;
注:あなたはまだイベントを自分で追加する必要があります... :)
更新:
にイベントを追加するにはこれらの項目は、MenuItemのAdd()メソッドで直接渡すのではなく、変数で宣言する必要があります。したがって、前のコードは次のようになります。
var contextMenu = new ContextMenu();
var itemOne = new MenuItem("New");
itemOne.Click += ContextMenuItemClick;
contextMenu.MenuItems.Add(itemOne);
var itemTwo = new MenuItem("Close");
itemTwo.Click += ContextMenuItemClick;
contextMenu.MenuItems.Add(itemTwo);
ContextMenu = contextMenu;
ご覧のとおり、ボットアイテムはClickイベントのイベントハンドラと同じです。その場合、どのアイテムがクリックされたかをチェックします。あなたはまた、メニュー内の項目ごとに別々のイベントハンドラを設定することもできますが、その後は基本的には同じもののための方法の多くで終わる
private void ContextMenuItemClick(object sender, EventArgs e)
{
var selectedItem = (MenuItem)sender;
switch(selectedItem.Text)
{
case "New" : //do some new stuff
break;
case "Close": //do some closing stuff
break;
}
}
注... :)希望この:このコードは次のようになります助けて!
アップデート2:あなたは、通常、自分でこれを達成することができたはずです、私が与えたすべての助けを借りて、
、ありませんか? :)とにかく、別のハンドラのコードは次のようになります。
itemOne.Click += itemOne_Click;
itemTwo.Click += itemTwo_Click;
private void itemOne_Click(object sender, EventArgs e)
{
//do the new stuff
}
private void itemTwo_Click(object sender, EventArgs e)
{
//do the closing stuff
}
Update3と:
あなたはすでに追加メニューアイテムに適切な名前を与えた場合は、インデックスを使用して順序を変更することができますプロパティ。私は、次のメニューアイテムは、のContextMenuに追加した言う:
var itemOne = new MenuItem("New") { Name = "NewItem" };
var itemTwo = new MenuItem("Close") { Name = "CloseItem" };
「NewItem」は最初の項目になり、「CloseItem」は第二あろう。私は前のコードに触れることなく順番を変更したい場合は今、あなたはこれを行うことができます。
contextMenu.MenuItems["NewItem"].Index = 1;
これは、第一及び第二として「NewItem」として「CloseItem」を設定します。 3つ以上のアイテムがある場合は、各アイテムのIndexプロパティを個別に設定することをお勧めします。
私は – Dotnet
のデフォルトアイテムで可能です。あなたのコードごとに個別のイベントを書くにはどうすればいいですか? – Dotnet
私の更新された回答を確認してください。 :) – Abbas