0

私は一日中この問題に取り組んできました。いくつかのメニュー項目を含むメニューストリップがあります。各アイテム、アイテムも多数取り揃えております。ここで、親メニュー項目をクリックすると、別の場所をクリックするまでコンテナー (contextmenu と同様) が開いたままになります。

ここに画像の説明を入力

画像の例では、"Clientes" が親アイテムになり、そこに子メニュー アイテムを含む "container" があります。

私がやりたかったのは、マウスが親アイテムまたはコンテナ領域を離れたときにその「コンテナ」を閉じることです。フォームの他の部分をクリックして閉じる必要はありません。私がそれを言うとき、それは私が実際に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 に答える