我正在爲Context Menu
添加Context Items
,並根據用戶選擇顯示所需的用戶所需的Items
。我想顯示這些context items
用戶NEW
和CLOSE
..是否可以顛倒上下文菜單項或顛倒排序
我做了一些事情像
ContextMenu.Add(NEW)
ContextMenu.Add(CLOSE)
但我得到這個排序順序一樣CLOSE
第一和NEW
最後。但是我需要首先顯示NEW
,最後顯示CLOSE
。有沒有可能做到。
我正在爲Context Menu
添加Context Items
,並根據用戶選擇顯示所需的用戶所需的Items
。我想顯示這些context items
用戶NEW
和CLOSE
..是否可以顛倒上下文菜單項或顛倒排序
我做了一些事情像
ContextMenu.Add(NEW)
ContextMenu.Add(CLOSE)
但我得到這個排序順序一樣CLOSE
第一和NEW
最後。但是我需要首先顯示NEW
,最後顯示CLOSE
。有沒有可能做到。
這個(非常基本的代碼)應該這樣做。
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個,則最好單獨爲每個項目設置索引屬性。
是否可以使用默認的項目我有 – Dotnet 2012-03-06 13:19:28
我怎麼能寫個別事件,按您的代碼 – Dotnet 2012-03-06 13:19:59
請檢閱我更新的答案。 :) – Abbas 2012-03-06 13:31:22