目标:
右键单击列表视图并选择其他选项。
问题:
有两个问题:
*当我点击右键时,菜单的左角并不完全位于箭头的位置
*如何在菜单中创建一行?
关于菜单的主要问题
需要支持才能创建这两个红色标记。
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;
}
答案 0 :(得分:3)
要创建“行”,您必须使用文本“ - ”
创建一个MenuItem答案 1 :(得分:3)
对于定位,您可以替换
myContextMenu.Show(lstV_Stock, this.PointToClient(Cursor.Position), LeftRightAlignment.Right);
到
myContextMenu.Show(lstV_Stock, e.Location(), LeftRightAlignment.Right);
或e.X点,e.Y。不是来自this.PointToClient,而是来自生成事件的MouseEventArgs。您可以检查wahat MouseEvent是否有here。
答案 2 :(得分:1)
问题
答案 3 :(得分:0)
因此,使用ContextMenu是这里的方法。你所指的那些“行”叫做Separaters。
如果您要在设计视图中创建COntext菜单,请单击上下文菜单,然后在菜单中右键单击,然后单击插入>分体。
然后,您可以将其向上或向下拖动,或者根据需要拖动到子菜单中。