Tag: 上下文菜单

有没有办法显示“阻止”WinForms ContextMenu?

有没有办法显示ContextMenu并阻止进一步执行,直到选择了一个项目? 特别是,我希望获得类似于ShowDialog()行为,但是对于ContextMenu 。 直接的方法不起作用: ContextMenu cm = new ContextMenu(); cm.MenuItems.Add(“1”, (s,e) => {value = 1;}); cm.Show(control, location); 因为Click回调不是直接从Show()调用,而是在消息循环处理click事件时稍后调用。 如果你运气不好, menu会在事件处理之前被垃圾收集,在这种情况下,事件就会无声地丢失。 (这意味着你不能以这种方式真正使用ContextMenu的局部变量。) 这似乎有效,但感觉“不洁”: using (ContextMenu cm = new ContextMenu()) { cm.MenuItems.Add(“1”, (s,e) => {value = 1;}); cm.Show(control, location); Application.DoEvents(); } 有没有更好的办法?

将WPF ContextMenu放在第二个屏幕上

我目前正在尝试解决以下问题: 我没有父窗口,我只是右键单击第二个屏幕,打开一个WPF ContextMenu(来自原生C ++母版应用程序),它实际上没有出现在第二个屏幕上,而是出现在第一个屏幕上。 我尝试使用鼠标坐标。 不起作用,因为ContextMenu将保留在第一个屏幕上。 在第二个屏幕上放置一个不可见的辅助窗口,将其设置为父级并在相对于第二个屏幕左上角的坐标处打开ContextMenu工作正常。 但我不想使用辅助窗口。 现在:如何在没有父窗口的情况下将ContextMenu放在第二个屏幕上。 有没有办法告诉菜单使用什么屏幕? 也许我可以在ContextMenu的“CustomPopupPlacementCallback”中使用一些参数? 任何帮助将不胜感激:-D 干杯!