2012-03-06 62 views
0

我正在爲Context Menu添加Context Items,並根據用戶選擇顯示所需的用戶所需的Items。我想顯示這些context items用戶NEWCLOSE ..是否可以顛倒上下文菜單項或顛倒排序

我做了一些事情像

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

但我得到這個排序順序一樣CLOSE第一和NEW最後。但是我需要首先顯示NEW,最後顯示CLOSE。有沒有可能做到。

回答

3

這個(非常基本的代碼)應該這樣做。

var contextMenu = new ContextMenu(); 
contextMenu.MenuItems.Add(new MenuItem("New")); 
contextMenu.MenuItems.Add(new MenuItem("Close")); 
this.ContextMenu = contextMenu; 

注:在窗體的構造函數中放置以下代碼你還是要自己添加事件... :)

更新:

要將事件添加到你必須在變量中聲明它們,而不是直接在MenuItems的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; 

正如您所看到的,bot項目具有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; 
    } 
} 

請注意,您還可以設置菜單中的每個項目一個單獨的事件處理程序,但你最終有很多的方法基本上是相同的東西... :)希望這幫助!

UPDATE2:

與所有給我幫助,你通常應該已經能夠自己來實現這一目標,不是? :)無論如何,對於一個單獨的處理程序的代碼看起來就像這樣:

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:

如果你給適當的名字你已經添加的菜單項,您可以更改使用索引的順序-屬性。說我有以下添加到文本菜單的菜單項:

var itemOne = new MenuItem("New") { Name = "NewItem" }; 
var itemTwo = new MenuItem("Close") { Name = "CloseItem" }; 

的「的newitem」將是第一項和「CloseItem」將是第二個。現在,如果我想改變順序而不觸及前面的代碼,你可以這樣做:

contextMenu.MenuItems["NewItem"].Index = 1; 

這將設置「CloseItem」作爲第一個和「的newitem」作爲第二個。如果您的項目超過2個,則最好單獨爲每個項目設置索引屬性。

+0

是否可以使用默認的項目我有 – Dotnet 2012-03-06 13:19:28

+0

我怎麼能寫個別事件,按您的代碼 – Dotnet 2012-03-06 13:19:59

+0

請檢閱我更新的答案。 :) – Abbas 2012-03-06 13:31:22