2012-03-06 16 views
0

Context Menuの場合はContext Itemsを追加し、ユーザの選択に基づいて必要な場合はItemsを表示します。私は コンテキストメニューの項目を逆にすることも、並べ替えを逆転することもできます

は私が

ContextMenu.Add(NEW) 
ContextMenu.Add(CLOSE) 

のようないくつかのことをしました。ユーザーNEWCLOSEのためにこれらのcontext itemsを表示したいと思います。しかし、私は最初CLOSENEW最後のようにソートされた順序でこれを取得しています。しかし、最初にNEWCLOSEと表示する必要があります。それは可能ですか?

答えて

3

これは非常に基本的なコードです。フォームのコンストラクタに入れ、次のコード:

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プロパティを個別に設定することをお勧めします。

+0

私は – Dotnet

+0

のデフォルトアイテムで可能です。あなたのコードごとに個別のイベントを書くにはどうすればいいですか? – Dotnet

+0

私の更新された回答を確認してください。 :) – Abbas

関連する問題