Добавление контекстного меню к элементу - PullRequest
39 голосов
/ 22 марта 2012

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

Спасибо за поиск.

Вот полный код:

    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; 

Ответы [ 4 ]

68 голосов
/ 22 марта 2012

Добавьте контекстное меню к вашей форме и затем назначьте его в свойствах элемента управления в ContextMenuStrip. Надеюсь, это поможет:).

Надеюсь, это поможет:

ContextMenu cm = new ContextMenu();
cm.MenuItems.Add("Item 1");
cm.MenuItems.Add("Item 2");

pictureBox1.ContextMenu = cm;
25 голосов
/ 22 декабря 2013

Это исчерпывающий ответ на этот вопрос. Я сделал это, потому что эта страница высоко в результатах поиска Google, и ответ не входит в достаточно подробно. В этом посте предполагается, что вы компетентны в использовании форм Visual Studio C #. Это основано на VS2012.

  1. Начните с простого перетаскивания ContextMenuStrip на форму. Он просто поместит его в верхний левый угол, где вы сможете добавить свои пункты меню и переименовать его по своему усмотрению.

  2. Вам нужно будет просмотреть код и самостоятельно ввести событие в форму. Создайте событие нажатия мыши для рассматриваемого элемента, а затем назначьте для него событие правого щелчка следующим образом (я назвал 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;
        }
    }
    
  3. Назначьте обработчик событий вручную для form.designer (вам может понадобиться добавить «using» для System.Windows.Forms; вы можете просто разрешить его):

    this.pictureBox1.MouseDown += new MouseEventHandler(this.pictureBox1_MouseDown);
    
  4. Все, что нужно на этом этапе, - это просто дважды щелкнуть каждый пункт меню и выполнить необходимые операции для каждого события щелчка точно так же, как и для любой другой кнопки.

Это основной код для этой операции. Очевидно, вы можете изменить его, чтобы он соответствовал вашей практике кодирования.

12 голосов
/ 02 марта 2015

Если вы используете Visual Studio, также есть решение с графическим интерфейсом:

  1. Из панели инструментов добавить ContextMenuStrip
  2. Выберите контекстное меню и добавьте пункты правой кнопки мыши
  3. Для каждого элемента установить события нажатия на соответствующие функции
  4. Выберите форму / кнопку / изображение / и т. Д. (Любой элемент), к которому будет подключено контекстное меню
  5. Установите его ContextMenuStrip для меню, которое вы создали.
0 голосов
/ 01 сентября 2017

Просто поиграв с этим, полезно знать, что точки eX / eY относятся к элементу управления, поэтому, если (как я) вы добавляете контекстное меню в просмотр списка или что-то подобное, вы захотите отрегулируйте его в соответствии с происхождением формы. В приведенном ниже примере я добавил 20 к x / y, чтобы меню появилось немного правее и под курсором.

cmDelete.Show(this, new Point(e.X + ((Control)sender).Left+20, e.Y + ((Control)sender).Top+20));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...