我们的程序中有一个表单,允许用户通过使用菜单栏来确定用户在设置权限时可以看到的内容。当用户点击一个项目时,该项目就会被“选中”(在它旁边打勾)。但是,这也会关闭菜单。
当用户点击它时,有没有办法阻止这个菜单关闭(不影响程序中的任何其他菜单)?到目前为止我还没有在设置中找到任何东西,任何_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
}
Run Code Online (Sandbox Code Playgroud)
这样,自动关闭仍然有效,并且 toolStrip 将正确关闭。
小智 2
我是一名黑客,但我会对您可以单击的每个项目执行此操作:
sampleNameToolStripMenuItem.ShowDropDown();
Run Code Online (Sandbox Code Playgroud)
这样,每当您单击某些内容时,它也会立即再次下拉菜单。
| 归档时间: |
|
| 查看次数: |
656 次 |
| 最近记录: |