Добавление правого клика / контекстного меню для элементов списка в C # - PullRequest
0 голосов
/ 14 ноября 2009

У меня есть ListBox, и он заполнен элементами, я хотел бы знать, как:

  1. когда вы щелкнете правой кнопкой мыши в списке, будет выбран правый клик,
  2. отобразится меню правой кнопки мыши с несколькими элементами.
  3. когда вы нажимаете на любой из предметов, срабатывает соответствующая пустота.

Заранее спасибо за любую помощь, и примеры кода, пожалуйста!

Ответы [ 3 ]

4 голосов
/ 14 ноября 2009

Мне кажется, что это вопрос "домашней работы", поэтому я собираюсь ответить на него (надеюсь), дав вам всего несколько советов, как решить эту проблему для себя.

Первая фаза

  1. создать пример проекта с ListBox
  2. определяет обработчики событий для событий MouseClick, MouseDown и Click.
  3. поставить Console.WriteLine («некоторый соответствующий текст»); оператор в каждом из этих обработчиков, чтобы вы могли посмотреть в окне вывода в Visual Studio и посмотреть, какой обработчик событий был вызван.

...

Вторая фаза

  1. запустите тестовую программу и проследите разницу между событиями, о которых сообщается для левой и правой кнопок мыши (при условии, что в вашей среде контекстный щелчок установлен правой кнопкой мыши вниз ... что может не быть правдой для всех).

  2. сосредоточиться на одном событии, которое вы можете перехватить контекстным щелчком мыши.

  3. добавить контекстное меню в тестовый проект и установить это контекстное меню как контекстное меню ListBox.

  4. убедитесь, что теперь вы можете щелкнуть правой кнопкой мыши по элементу в ListBox и что появится контекстное меню, НО СОБЫТИЕ ПРОДОЛЖАЕТСЯ ОБРАЩАТЬСЯ С РУКОВОДИТЕЛЕМ, ВЫ «ОБНАРУЖИЛИ» НА ШАГЕ 2.

  5. теперь пройдитесь по всем обработчикам событий для ListBox и выясните, какой из них можно использовать для обнаружения, учитывая определенное место в ListBox, какой элемент списка был «достигнут».

  6. как только вы можете определить, по какому элементу списка щелкнули правой кнопкой мыши, и вы знаете, что ваше контекстное меню работает, у вас есть только проблема убедиться, что выбран элемент списка по щелчку правой кнопкой мыши: и это довольно легко .

Понимание этого самостоятельно научит вас нескольким очень полезным вещам, которые вы сможете использовать позже при программировании для других элементов управления.

удачи, Билл

0 голосов
/ 23 января 2017

1.При щелчке правой кнопкой мыши в списке, будет выбран элемент, щелкнувший правой кнопкой мыши

2. Появится контекстное меню с несколькими пунктами.

private void listBoxNode_MouseUp(object sender, MouseEventArgs e)
    {
        int location = listBoxNode.IndexFromPoint(e.Location);
        if (e.Button == MouseButtons.Right)
        {
            listBoxNode.SelectedIndex = location;                //Index selected
            contextMenuStrip1.Show(PointToScreen(e.Location));   //Show Menu
        }
    }

3.Когда вы нажимаете на любой из предметов, срабатывает соответствующая пустота.

private void showDetailsToolStripMenuItem_Click(object sender, EventArgs e)
        {
              //put your code here after clicking
              //on items in context menu
        }
0 голосов
/ 14 ноября 2009

Во-первых, вам необходимо подписаться на событие ListBox.MouseClick. Вы сможете определить, какая кнопка была нажата, и координаты курсора. Затем используйте метод ListBox.IndexFromPoint, чтобы найти выбранный элемент. Вы можете выбрать его, используя свойство ListBox.SelectedIndex. Для отображения контекстного меню используйте классы ContextMenu или ContextMenuStrip. Дополнительная документация по контекстному меню доступна в MSDN

...