弹出窗口和上下文菜单

时间:2010-02-23 20:07:24

标签: winforms winapi popup

我使用ToolStripDropDown将用户控件作为弹出窗口托管。问题是当在此弹出窗口中显示上下文菜单条时,弹出窗口本身在上下文菜单打开时关闭。 我试图将ContextMenuStrip子类化并将WS_EX_NOACTIVATE添加到CreateParams但没有任何改变。首先我认为没有办法这样做,因为它是常见的行为,但后来我尝试将一个TextBox类放到弹出的用户控件上并调用Edit控件上下文菜单 - 并且父弹出窗口没有关闭。 我错过了什么?

2 个答案:

答案 0 :(得分:1)

有类似的问题。在我的UserControll上是一个工具条。当我按下toolsstripdropdown按钮时,显示了下拉列表,但弹出窗口消失了。 原因是popup.Autoclose是真的。设置为false后,弹出窗口不再关闭。

        ToolStripDropDown popup = new ToolStripDropDown();
        popup.AutoClose = false;         //Set to FALSE
        popup.Margin = Padding.Empty;
        popup.Padding = Padding.Empty;
        ToolStripControlHost host = new ToolStripControlHost(userControl1);
        host.Margin = Padding.Empty;
        host.Padding = Padding.Empty;
        popup.Items.Add(host);
        popup.Show(button1, new Point(100,100));

答案 1 :(得分:0)

实际解决方案应该是马丁的最终评论: 使用ContextMenu而不是ContextMenuStrip 那个对我有用,并且当右键单击其中一个内容控件时,ToolStripDropDown不再自行关闭。我们仍然需要AutoClose,禁用ToolStripDropDown上的AutoClose会做坏事,它应该在失去焦点时关闭。示例:打开任何其他应用程序窗口,ToolStripDropDown将继续显示在顶部