C# 右键单击菜单和菜单行
目标:C# 右键单击菜单和菜单行,c#,winforms,C#,Winforms,目标: 在列表视图中单击鼠标右键,然后选择其他选项 问题: 有两个问题: *右键单击时,菜单的左角不完全位于箭头的点位置。 *如何在菜单中创建一行 菜单的主要问题 需要支持来创建这两个redmark 要创建“行”,您必须创建一个带有文本“-”的菜单项 如果您只是设置ListView.ContextMenu属性并删除所有自己的右键单击代码,则菜单应正确显示 对于该行,您需要一个ToolStripSeparator项。当您键入“-”作为文本时,设计器将创建一个。可以在设计器中拖动它们 因此,使用上下
在列表视图中单击鼠标右键,然后选择其他选项 问题:
有两个问题:
*右键单击时,菜单的左角不完全位于箭头的点位置。
*如何在菜单中创建一行 菜单的主要问题 需要支持来创建这两个redmark 要创建“行”,您必须创建一个带有文本“-”的菜单项
因此,使用上下文菜单是一种方法。您所指的那些“线”称为分隔符 如果要在“设计”视图中创建关联菜单,请单击关联菜单,然后在菜单内单击鼠标右键,然后单击“插入>分隔符”
然后,您可以将其向上或向下拖动,或者根据需要将其拖动到子菜单中。对于定位,您可以替换
myContextMenu.Show(lstV_Stock, this.PointToClient(Cursor.Position), LeftRightAlignment.Right);
到
或者点e.X,e.Y.不是来自this.PointToClient,而是来自生成事件的MouseEventArgs。您可以检查MouseEvent是否有。上下文菜单项之间的一行是分隔符。只需添加您的上下文菜单条。+1-我不知道您可以通过键入“-”来插入分隔符。我使用了“myContextMenu.Show(lstV_Stock,e.Location,LeftRightAlignment.Right);”
myContextMenu.Show(lstV_Stock, this.PointToClient(Cursor.Position), LeftRightAlignment.Right);
myContextMenu.Show(lstV_Stock, e.Location(), LeftRightAlignment.Right);