我正在开发一个辅助技术应用程序(用C#),它覆盖当前打开的窗口顶部的信息。它检测可点击的元素,并标记它们。如何在.NET/C#中的右键菜单上绘制?
要做到这一点,我目前正在创建一个无边界透明窗口,并将TopMost设置为“true”,并在其上绘制标签。这意味着总是有一个窗口悬停在当前应用程序的前面,我可以在其上绘制标签。
问题是,此窗口不包括右键菜单 - 只有其他窗口。当用户右键单击时,上下文菜单将绘制在叠加层上方。
我需要能够在右键单击菜单中标记元素,但是我无法在当前实现中使用它。有人知道解决方案吗?
编辑:这是绘制覆盖图的相关代码。我在表单设计器中设置了表单选项,而不是在代码明示中,所以我不确定它会有多大的帮助。我删除了与绘图无关的代码或表单本身:
public partial class OverlayForm : Form
{
public OverlayForm()
{
}
protected override void OnPaint(PaintEventArgs eventArgs)
{
base.OnPaint(eventArgs);
Graphics graphics = eventArgs.Graphics;
Brush brush = new SolidBrush(this.labelColor);
foreach (ClickableElement element in this.elements)
{
Region currentRegion = element.region;
graphics.FillRegion(brush, currentRegion);
}
}
}
你可以显示你的代码做覆盖 – Jacobr365
@ Jacobr365 - 当然,补充。 :) – JackCC
我不认为这是可能的。上下文菜单比你的表格更“顶级”,因为它获得了焦点和操作系统的更高z顺序。 – DonBoitnott