0

我整天都在处理这个问题。我有一个带有几个菜单项的菜单条。每个项目,也有很多项目。现在,如果我单击父菜单项,一个容器(类似于 contextmenu)会保持打开状态,直到我单击其他位置。

在此处输入图像描述

在图像示例中,“客户”将是父项,而“容器”将是其子菜单项。

我想做的是在鼠标离开父项或容器区域时关闭该“容器”。我不想点击表单的任何其他部分来关闭它。当我这么说时,这是因为我实际上正在使用 WPF 按钮,我需要这样做。

我在这里需要帮助,希望有人能给我一些建议。

我尝试使用父项(“Clientes”等)的 MouseLeave 事件,结果如下:

private void clientesToolStripMenuItem_MouseLeave(object sender, EventArgs e)
    {
        clientesToolStripMenuItem.DropDown.Close();
    }

这可行,但显然,当鼠标离开菜单项“Clientes”时,它会关闭父级和容器。我需要一种方法来知道鼠标是在父菜单项上还是在他们的一个子项上,以便在我知道鼠标在其他地方时关闭它。

希望有人可以帮助我。

4

1 回答 1

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();
}
于 2013-03-02T07:30:49.280 回答