Flo*_*ood 4 events controls contextmenu winforms c#-4.0
我试图让我的上下文菜单保持在屏幕上,即使我点击其中一个下拉项目(当按下shift键时,虽然我不认为这对问题很重要).当您单击开始>所有程序>附件> [现在点击您的shift键]并单击Windows资源管理器时,您可以看到Windows XP中的行为示例...菜单保持不变.
它是一个C#应用程序,使用Winforms,开发机器是Windows 7,生产是XP,Vista或7.
toolstripmenuitem似乎没有closing事件; 只有closed一个.熟悉closing事件的人会知道你可以设置一个cancel标志来阻止控件关闭.
此外,当我尝试从click事件或closed事件中重新显示它的变通方法时,它不起作用.虽然这本来就是一种可以容忍的解决方法,但它不适用于生产.
任何建议或相关信息非常感谢.
谢谢
小智 6
这是我最终使用的。使用此方法,只有当鼠标指针位于下拉控件上时,才会禁用下拉菜单的自动关闭功能。MyMenuItem是类型ToolStripMenuItem。
AddHandler MyMenuItem.DropDown.MouseEnter, AddressOf DisableDropMenuClose
AddHandler MyMenuItem.DropDown.MouseLeave, AddressOf EnableDropMenuClose
Private Sub DisableDropMenuClose(ByVal sender As System.Object, ByVal e As System.EventArgs)
CType(sender, ToolStripDropDownMenu).AutoClose = False
End Sub
Private Sub EnableDropMenuClose(ByVal sender As System.Object, ByVal e As System.EventArgs)
CType(sender, ToolStripDropDownMenu).AutoClose = True
End Sub
Run Code Online (Sandbox Code Playgroud)
我能够在被点击通过设置它的父下拉菜单中的自动关闭属性设置为"假"像这样有我的文本菜单停留在屏幕上的动态创建的子菜单:
ParentMenu.DropDown.AutoClose = false;
Run Code Online (Sandbox Code Playgroud)
其中ParentMenu是一个ToolStripMenuItem.
使用下拉的父结束活动ToolStripDropDownMenu通过设置一个"取消"标志是不是一个可行的解决方案,因为它造成不一致的显示/隐藏其任2级父菜单的行为,以及对造成意想不到的视觉假象,以达致这以后通过代码隐藏时我无法摆脱的屏幕.它似乎也导致动态创建的菜单的父母的某些事件不再触发,例如它的MouseEnter事件.
在这次体验中有趣的发现是,尽管Visual Studio 2010的intellisense列出了一个上下文菜单项的LostFocus事件DropDown; 将此事件添加到动态创建的菜单时,它不会被触发; 这显然是这里提到的已知行为: