右键单击列表视图以显示 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)事件以选择树视图中的项目

单击列表视图项

如何在按钮单击 FLUTTER 上刷新列表小部件数据

如何知道单击项目在列表视图中相对于android中的屏幕的y位置

tableau的饼图的格子线怎么显示

单击列表视图时在活动中显示不同的信息