#c# #winforms
#c# #winforms
Вопрос:
Цель:
щелкнуть правой кнопкой мыши в listview и выбрать другой вариант.
Проблема:
Есть две проблемы:
* Когда я щелкаю правой кнопкой мыши, левый угол меню находится не совсем в том месте, где указано стрелкой.
* Как мне создать строку в меню?
Основная проблема с меню
Нужна поддержка для создания этих двух красных меток.
private void lstV_Stock_MouseUp(object sender, MouseEventArgs e)
{
switch (e.Button)
{
// Right mouse click
case MouseButtons.Right:
ContextMenu myContextMenu = new ContextMenu();
MenuItem menuItem1 = new MenuItem("New product");
MenuItem menuItem2 = new MenuItem("Delete");
MenuItem menuItem3 = new MenuItem("Add quantity");
// Clear all previously added MenuItems.
myContextMenu.MenuItems.Clear();
myContextMenu.MenuItems.Add(menuItem1);
myContextMenu.MenuItems.Add(menuItem2);
myContextMenu.MenuItems.Add(menuItem3);
if (lstV_Stock.SelectedItems.Count > 0)
{
foreach (ListViewItem item in lstV_Stock.SelectedItems)
{
myContextMenu.MenuItems[1].Visible = true;
myContextMenu.MenuItems[2].Visible = true;
myContextMenu.MenuItems[0].Visible = false;
}
}
else
{
myContextMenu.MenuItems[1].Visible = false;
myContextMenu.MenuItems[2].Visible = false;
myContextMenu.MenuItems[0].Visible = true;
}
myContextMenu.Show(lstV_Stock, this.PointToClient(Cursor.Position), LeftRightAlignment.Right);
menuItem1.Click = new System.EventHandler(this.menuItem1_Click);
break;
}
Комментарии:
1. Строка между элементами contextmenu является разделителем. Просто добавьте в свою строку contextmenu.
Ответ №1:
Для позиционирования вы можете заменить
myContextMenu.Show(lstV_Stock, this.PointToClient(Cursor.Position), LeftRightAlignment.Right);
Для
myContextMenu.Show(lstV_Stock, e.Location(), LeftRightAlignment.Right);
или точку e.X, e.Y. Не из этого.PointToClient, но из MouseEventArgs, генерирующего событие. Вы можете проверить, что есть у MouseEvent здесь.
Комментарии:
1. Я использовал вместо этого «myContextMenu. Показать(lstV_Stock, т. е. Местоположение, выравнивание по левому краю. Справа);»
Ответ №2:
Чтобы создать «строку», вы должны создать элемент меню с текстом «-«
Ответ №3:
Проблема
- Если вы просто установите ListView.Свойство ContextMenu и удалите весь ваш собственный код щелчка правой кнопкой мыши, меню должно отображаться правильно.
- Для строки вам нужен элемент ToolStripSeparator. Дизайнер создаст его, когда вы введете ‘-‘ в качестве текста. Вы можете перетащить их в конструктор.
Комментарии:
1. 1 — Я не знал, что вы можете вставить разделитель, просто набрав «-«.
Ответ №4:
Итак, здесь можно использовать ContextMenu. Те «Строки», на которые вы ссылаетесь, называются разделителями.
Если вы создаете контекстное меню в режиме конструктора, затем щелкните контекстное меню, затем щелкните правой кнопкой мыши внутри меню и выберите Вставить > Разделитель.
Затем вы можете перетащить его вверх или вниз или в подменю, если хотите.