我整天都在处理这个问题。我有一个带有几个菜单项的menustrip。 每个项目,也有很多项目。现在,如果我单击父菜单项,容器(类似于contextmenu)将保持打开状态,直到我点击其他位置。
在图像示例中,“Clientes”将是父项目,其中包含“子容器”及其子菜单项。
我想要做的是,当鼠标离开父项或容器区域时关闭该“容器”。我不想点击表单的任何其他部分来关闭它。当我这么说时,因为我实际上是在使用WPF按钮而且我需要这样做。
我在这里需要帮助,希望有人能给我一些建议。
我尝试使用父项的MouseLeave事件(“Clientes”等),并且确实:
private void clientesToolStripMenuItem_MouseLeave(object sender, EventArgs e)
{
clientesToolStripMenuItem.DropDown.Close();
}
这很有效,但显然,当鼠标离开menuitem“Clientes”时,它会关闭父级和容器。我需要一种方法来知道鼠标是在父菜单上还是在其中一个孩子上面,以便在我知道鼠标在其他地方时将其关闭。
希望有人可以帮助我。答案 0 :(得分:1)
您可以通过处理clientesToolStripMenuItem本身的事件来实现此目的。当鼠标进入客户主菜单矩形时,只需显示容器并在其离开此矩形时隐藏它。假设picContainer是你的矩形,你可以这样做:
private void clientToolStripMenuItem_MouseEnter(object sender, EventArgs e)
{
picContainer.Location = clientToolStripMenuItem.ContentRectangle.Location;
picContainer.Show();
}
private void clientToolStripMenuItem_MouseLeave(object sender, EventArgs e)
{
this.picContainer.Hide();
}