在窗口范围内限制/移动上下文菜单(右键单击)

Posted

技术标签:

【中文标题】在窗口范围内限制/移动上下文菜单(右键单击)【英文标题】:Restrict/Move the context-menu (right click) in window bounds 【发布时间】:2015-03-21 08:26:42 【问题描述】:

当您在浏览器(或任何其他应用程序)的边缘单击鼠标右键时,上下文菜单将溢出窗口,但不会溢出屏幕。

我希望上下文菜单始终位于窗口边界内,因此当我在底部边缘附近单击时,它应该将菜单显示在顶部。假设窗口的尺寸总是大于上下文菜单。

这可能吗?如果没有,有什么解决方法吗?

附:我不是在构建应用程序窗口,而是构建应用程序的查看器。

【问题讨论】:

您可以使用 javascripthtml 中实现自己的上下文菜单,在这种情况下,上下文菜单将显示在框架中(您可能可以使用一些专门的 Web 组件来定义自己的上下文菜单 我正在寻找的功能应该更多是在系统级别,我也可以处理非浏览器窗口。 什么是“应用程序查看器”? @andlabs 它只是一个视频流应用程序,它正在流式传输应用程序窗口区域,这就是为什么我需要上下文菜单位于窗口范围内。 【参考方案1】:

使用 ContextMenu 的 PlacementPlacementRectangle 属性。

在下面的示例中,我将 Placement 属性设置为“Relative”,将 Rectangle 设置为 x,y 坐标 25、25。然后,无论我在何处单击上下文菜单,都将显示相对于 Button 的 25、25 .

<Button ContextMenuService.Placement="Relative" ContextMenuService.PlacementRectangle="25, 25, 0, 0">
    <Button.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Do this" />
            <MenuItem Header="Do that" />
        </ContextMenu>
    </Button.ContextMenu>
</Button>

当然,您可以根据菜单的大小及其与边缘的接近程度,对这些属性使用哪些值进行更动态的计算。

【讨论】:

以上是关于在窗口范围内限制/移动上下文菜单(右键单击)的主要内容,如果未能解决你的问题,请参考以下文章

使用 PyGTK 的右键单击菜单(上下文菜单)

闪亮:在numericInput中右键单击提供上下文菜单?

选择两个文件时,从右键单击 Windows 上下文菜单中隐藏一个选项

检测在列表视图内单击并显示上下文菜单

打开的上下文窗口阻塞接收鼠标事件,如何避免?

丰富的、类似窗口的上下文菜单(如 Interface Builder)