我们的程序中有一个表单,允许用户通过使用菜单栏确定用户在设置权限时可以看到的内容。当用户点击某个项目时,该项目将被“选中”(旁边有一个勾号)。但是,这也会关闭菜单。
当用户点击此菜单时,是否有办法停止此菜单关闭(不影响程序中的任何其他菜单)?到目前为止,我还没有在设置中找到任何内容,任何_click
方法也不会影响它。
答案 0 :(得分:2)
我是一个黑客,但我会为你点击的每个项目执行此操作:
sampleNameToolStripMenuItem.ShowDropDown();
这样一旦你点击某个东西,它也会在你之后再次放下菜单。
答案 1 :(得分:1)
我有一个类似的问题。在我的情况下,要检查的项目为“低级”。
我通过在ToolStripMenuItems中添加一个MouseEnter和MouseLeave事件来解决它。
在MouseEnter中,将两个menuItem的AutoClose设置为false-在MouseLeave中,将其设置为true。
Visualization of the issue I had
private void AddEventToToolStripMenuItems(IEnumerable<ToolStripMenuItem> menuItems)
{
// listen all menuItems
foreach (ToolStripMenuItem menuItem in menuItems)
{
menuItem.MouseEnter += OnToolStripMouseEnter;
menuItem.MouseLeave += OnToolStripMouseLeave;
}
}
private void OnToolStripMouseEnter(object sender, EventArgs e)
{
firstLevelTooStipMenuItem.DropDown.AutoClose = false;
secondLevelTooStipMenuItem.DropDown.AutoClose = false;
}
private void OnToolStripMouseLeave(object sender, EventArgs e)
{
firstLevelTooStipMenuItem.DropDown.AutoClose = true;
secondLevelTooStipMenuItem.DropDown.AutoClose = true;
}
答案 2 :(得分:0)
获取ToolStripMenuItem
从DropDown
ToolStripMenuItem
将AutoClose
设为false
价:
https://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripmenuitem(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.windows.forms.toolstripdropdown(v=vs.110).aspx
答案 3 :(得分:0)
听ToolStripDropDownClosingEventHandler中出现的ToolStripDropDown。为此,只需访问 ToolStripMenuItem.DropDown 属性,然后添加将处理 Closing 事件的侦听器。我们只需要检查鼠标指针是否在toolStrip矩形内,这可以通过以下代码完成:
private void ListenToolStripMenuItems(IEnumerable<ToolStripMenuItem> menuItems)
{
// listen all menuItems
foreach (ToolStrip menuItem in menuItems)
menuItem.DropDown.Closing += OnToolStripDropDownClosing;
}
private void OnToolStripDropDownClosing(object sender, ToolStripDropDownClosingEventArgs e)
{
var tsdd = sender as ToolStripDropDown; // casting
// checking if mouse it's inside
Point p = tsdd.PointToClient(MousePosition);
if (tsdd.DisplayRectangle.Contains(p))
e.Cancel = true; // cancel closing
}
这样,“自动关闭”仍然可以正常工作,并且工具条也将正确关闭。