Подтвердить что ты не робот

Добавление меню правой кнопки мыши к элементу

Я искал какое-то время для простого контекстного меню для одного элемента. Например, если я щелкнул правой кнопкой мыши на изображении, я хочу, чтобы небольшое меню появилось с моими ярлыками: "Добавить", "Удалить" и т.д. Если бы кто-нибудь мог помочь, я был бы самым большим.

Спасибо, что посмотрели.

Вот код:

    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; 
4b9b3361

Ответ 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));