在任务栏上绘制ContextMenuStrip

时间:2015-07-24 03:00:58

标签: c# .net windows winforms contextmenu

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

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

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

1 个答案:

答案 0 :(得分:0)

最后我设法找到答案。 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显示在任务栏上!