右键单击列表视图以显示 contextmenustrip,但弹出菜单出现在屏幕的不相关点
Posted
技术标签:
【中文标题】右键单击列表视图以显示 contextmenustrip,但弹出菜单出现在屏幕的不相关点【英文标题】:Right click in listview in order for contextmenustrip to be shown , but the popup menu is appearing in an irrelevant point of the screen 【发布时间】:2021-10-12 18:38:01 【问题描述】:使用上面的 vb.net 代码,当我右键单击列表视图的选定项目时,我设法显示一个弹出上下文菜单条。
Private Sub ListViewResults_MouseUp(sender As Object, e As MouseEventArgs) Handles ListViewResults.MouseUp
If e.Button = Windows.Forms.MouseButtons.Right Then
lvChangedFilesMenuStrip.Show(ListView1, New Point(e.X, e.Y))
End If
End Sub
关于我试过的lvChangedFilesMenuStrip.show方法的第二个参数
New Point(e.X, e.Y)
Cursor.Position
e.X, e.Y
.. 我看到弹出窗口仍然出现在屏幕的一个无关点! 我该怎么做才能在单击点的正下方显示上下文菜单?
【问题讨论】:
我不记得它是哪种方式,但您可能想查看 Control.PointToClient 或 Control.PointToScreen。 docs.microsoft.com/en-us/dotnet/api/…docs.microsoft.com/en-us/dotnet/api/… 【参考方案1】:你没有看到这之间的问题:
Handles ListViewResults.MouseUp
还有这个
Show(ListView1
您正在处理一个控件的事件,因此事件处理程序提供的坐标是相对于该控件的,然后您会显示相对于另一个控件的菜单。
【讨论】:
以上是关于右键单击列表视图以显示 contextmenustrip,但弹出菜单出现在屏幕的不相关点的主要内容,如果未能解决你的问题,请参考以下文章
python tkinter treeview右键单击(Button-3)事件以选择树视图中的项目