我正在为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