gpt4 book ai didi

c# - 有没有办法在您单击菜单时阻止菜单关闭?

转载 作者:行者123 更新时间:2023-11-30 16:51:16 25 4
gpt4 key购买 nike

我们的程序中有一个表单,允许用户通过使用菜单栏来确定用户在设置权限时可以看到的内容。当用户点击一个项目时,该项目就会被“选中”(在它旁边打勾)。但是,这也会关闭菜单。

enter image description here

有没有办法在用户单击该菜单时阻止该菜单关闭(而不影响程序中的任何其他菜单)?到目前为止,我还没有在设置中找到任何东西,而且任何 _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/

25 4 0