我是 Windows 窗体的新手,所以我想知道解决我的问题的最佳方法是什么。
我希望 ToolStripDropDownMenu 的 ToolStripMenuItems 仅在用户的鼠标离开包含它们的区域时才关闭(所有 ToolStripMenuItems)
目前我有以下代码:
{ ToolStripDropDownMenu menu = new ToolStripDropDownMenu();
menu.AutoClose = true;
foreach (ToolStripMenuItem toolStripItem in this.collectionToolStripMenuItems)
{
menu.Items.Add(toolStripItem);
}
menu.Show(sender, e.ControlLocation);
}
我在列表中定义了 toolStripMenuItems:collectionToolStripMenuItems,代码如下:
ToolStripMenuItem ToolStripItem = new ToolStripMenuItem(item.Name);
ToolStripItem.Click += new EventHandler(this.ValueMenuItem_Click);
ToolStripItem.MouseLeave += new EventHandler(MouseLeave);
ToolStripItem.MouseEnter += new EventHandler(MouseEnter);
在哪里
private void MouseLeave(object sender, EventArgs e)
{
ToolStripMenuItem item2 = (ToolStripMenuItem)sender;
ToolStripDropDownMenu menu = (ToolStripDropDownMenu)item2.Owner;
menu.Hide();
}
private void MouseEnter(object sender,EventArgs e)
{
ToolStripMenuItem item2 = (ToolStripMenuItem)sender;
ToolStripDropDownMenu menu = (ToolStripDropDownMenu)item2.Owner;
menu.Show();
}
private void ValueMenuItem_Click(object sender, EventArgs e)
{// Do something
ToolStripMenuItem item2 = (ToolStripMenuItem)sender;
ToolStripDropDownMenu menu = (ToolStripDropDownMenu)item2.Owner;
menu.Show();
return;
}
但是,每次用户单击或离开 toolStripMenuItem 时,这都会起作用,dropDown 会在很短的时间内关闭,因此看起来整个东西都在闪烁。
有人可以推荐一个更好的方法吗?非常感谢!