我们的程序中有一个表单,允许用户通过使用菜单栏来确定用户在设置权限时可以看到的内容。当用户点击一个项目时,该项目就会被“选中”(在它旁边打勾)。但是,这也会关闭菜单。
有没有办法在用户单击该菜单时阻止该菜单关闭(而不影响程序中的任何其他菜单)?到目前为止,我还没有在设置中找到任何东西,而且任何 _click
方法也不会影响它。
最佳答案
收听 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 = (ToolStripDropDown)sender;
// checking if mouse cursor is inside
Point p = tsdd.PointToClient(Control.MousePosition);
if (tsdd.DisplayRectangle.Contains(p))
e.Cancel = true; // cancel closing
}
这样 AutoClose 仍然有效并且 toolStrip 将正确关闭。
关于c# - 有没有办法在您单击菜单时阻止菜单关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34034358/