2012-03-06 85 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