Это (очень простой код) должно это сделать.Поместите следующий код в конструктор вашей формы:
var contextMenu = new ContextMenu();
contextMenu.MenuItems.Add(new MenuItem("New"));
contextMenu.MenuItems.Add(new MenuItem("Close"));
this.ContextMenu = contextMenu;
Примечание: вы все равно должны добавить события самостоятельно ...:)
Обновить:
Чтобы добавить события к элементам, вы должны объявить их в переменной, а не передавать их непосредственно в метод Add () для MenuItems.Таким образом, предыдущий код будет выглядеть следующим образом:
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:
Если вы дали правильные имена элементам меню, которые вы уже добавили,Вы можете изменить порядок, используя свойство Index.Скажем, у меня есть следующие пункты меню, добавленные в ContextMenu:
var itemOne = new MenuItem("New") { Name = "NewItem" };
var itemTwo = new MenuItem("Close") { Name = "CloseItem" };
«NewItem» будет первым элементом, а «CloseItem» будет вторым.Теперь, если я хочу изменить порядок , не касаясь предыдущего кода , вы можете сделать это:
contextMenu.MenuItems["NewItem"].Index = 1;
Это установит «CloseItem» в качестве первого и «NewItem» в качестве второго,Если у вас более двух элементов, лучше установить свойство Index для каждого элемента в отдельности.