Добавление меню правой кнопки мыши к элементу
Я искал какое-то время для простого контекстного меню для одного элемента. Например, если я щелкнул правой кнопкой мыши на изображении, я хочу, чтобы небольшое меню появилось с моими ярлыками: "Добавить", "Удалить" и т.д. Если бы кто-нибудь мог помочь, я был бы самым большим.
Спасибо, что посмотрели.
Вот код:
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Item 1", new EventHandler(Removepicture_Click));
cm.MenuItems.Add("Item 2", new EventHandler(Addpicture_Click));
pictureBox1.ContextMenu = cm;
Ответы
Ответ 1
Добавьте контекстное меню в свою форму и затем назначьте его в свойствах управления в ContextMenuStrip. Надеюсь, это поможет:).
Надеюсь, что это поможет:
ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Item 1");
cm.MenuItems.Add("Item 2");
pictureBox1.ContextMenu = cm;
Ответ 2
Это всеобъемлющий ответ на этот вопрос. Я сделал это, потому что эта страница высока в результатах поиска Google, и ответ не идет достаточно подробно. Это сообщение предполагает, что вы компетентны в использовании форм Visual Studio С#. Это основано на VS2012.
-
Начните с простого перетаскивания ContextMenuStrip в форму. Он просто поместит его в верхний левый угол, где вы можете добавить свои пункты меню и переименовать его по своему усмотрению.
-
Вам нужно будет просмотреть код и ввести событие в форму. Создайте событие mouse down для рассматриваемого элемента, а затем назначьте для него событие правого щелчка (я вызвал ContextMenuStrip "rightClickMenuStrip" ):
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
switch (e.Button)
{
case MouseButtons.Right:
{
rightClickMenuStrip.Show(this, new Point(e.X, e.Y));//places the menu at the pointer position
}
break;
}
}
-
Назначьте обработчик событий вручную для form.designer(вам может потребоваться добавить "использование" для System.Windows.Forms; вы можете просто его разрешить):
this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);
-
Все, что необходимо на данном этапе, - это просто дважды щелкнуть каждый элемент меню и выполнить нужные операции для каждого события клика таким же образом, как и для любой другой кнопки.
Это базовый код для этой операции. Вы, очевидно, можете изменить его, чтобы соответствовать вашим методам кодирования.
Ответ 3
Если вы используете Visual Studio, есть также графическое решение:
- Из панели инструментов добавьте ContextMenuStrip
- Выберите контекстное меню и добавьте элементы правого клика.
- Для каждого элемента установите события щелчка на соответствующие функции
- Выберите форму/кнопку/изображение/и т.д. (любой элемент), который будет подключен к меню правой кнопки мыши.
- Задайте его свойство ContextMenuStrip в созданном вами меню.
Ответ 4
Просто перепутавшись с этим, полезно знать, что точки eX/eY относятся к элементу управления, поэтому, если (поскольку я был) вы добавляете контекстное меню в список или что-то подобное, вам нужно будет отрегулируйте его по форме. В приведенном ниже примере я добавил 20 к x/y, чтобы меню слегка показалось вправо и под курсором.
cmDelete.Show(this, new Point(e.X + ((Control)sender).Left+20, e.Y + ((Control)sender).Top+20));