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