在任务栏上绘制 ContextMenuStrip

Draw ContextMenuStrip over taskbar

我想知道是否有一些方法可以在任务栏上绘制元素?

例如,我有一个在屏幕左下角显示上下文菜单的应用程序。我试过 ContextMenuContextMenuStrip,我想用第二个。 ContextMenu 正在任务栏上绘制,但 ContextMenuStrip 不是 - 它只是在任务栏上方显示了一些像素。

有没有办法在任务栏上绘制 ContextMenuStrip

终于找到答案了。 ContextMenuStrip 有 internal ShowInTaskbar method:

internal void ShowInTaskbar(int x, int y)

不能正常使用,但可以调用(一般不推荐,会导致线程时序逻辑出现一些错误)。不过,如果你想使用一些内部或私有的 类' 方法,你可以按照以下方式进行:

MethodInfo mi = typeof(ContextMenuStrip).GetMethod("ShowInTaskbar", BindingFlags.Instance | BindingFlags.NonPublic);
mi.Invoke(contextMenuStrip1, new object[] { mousePositionX, mousePositionY });

您只需发送正确的菜单条和鼠标坐标,以便在正确的位置显示菜单。

使用此方法后,我的 contextMenuStip1 显示在任务栏上!