2013-03-02 262 views
0

我一直在整天處理這個問題。我有一個菜單條和幾個菜單項。 每個項目,也有很多項目。現在,如果我點擊父菜單項,一個容器(類似於contextmenu)保持打開,直到我點擊其他地方。當鼠標離開容器時關閉Winform MenuStrip

enter image description here

在形象的例子,「Clientes」將是父項,並有其「容器」與他們的孩子的菜單項。

我想做的是當鼠標離開父項目或容器區域時關閉「容器」。我不想單擊表單的任何其他部分來關閉它。當我這樣說的時候,因爲我實際上使用WPF按鈕,所以我需要這樣做。

我需要幫助,希望有人能給我一些建議。

我試圖用父母項目(「Clientes」等)MouseLeave事件,有沒有:

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

這工作,但很明顯,它關閉父,也是容器時,鼠標離開menuitem「Clientes」。我需要一種方法來了解鼠標是否位於父菜單項或其子項之上,以便在知道鼠標位於其他位置時關閉它。

希望有人能幫助我。

+0

你使用的是什麼控件? 'MenuStrip'? – 2013-03-02 04:49:48

+0

@OscarMederos是的。那個。 – Andres 2013-03-02 05:06:07

回答

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(); 
} 
+0

謝謝你的回答。但我不太瞭解你的解決方案。正如你所說,picContainer將是我的矩形。我該如何創建?另外,我注意到當鼠標離開clientToolStripMenuItem時隱藏它,我需要的是當它離開容器的任何項目時隱藏/關閉。爲了以防萬一,我使用它的所有childs菜單項將容器調用到item的contentrectangle。希望你能多給我解釋一下。再次感謝你! – Andres 2013-03-02 16:08:54

+0

在你的問題中,你說過「一個容器(類似於contextmenu)」。在圖像中,這個容器有菜單項,比如「Nuevo cliente」等等。我的示例中的picContainer與此相當。其次,爲什麼當它離開集裝箱的任何物品時,它會隱藏/關閉,它已經隱藏了。只有當鼠標移動到這個特定的Clientes菜單的區域時,纔想顯示它,對嗎? – 2013-03-03 03:45:48

+0

是的,這就對了。感謝您的幫助,但我不需要一個答案了。我只是用另一種方式實現了菜單。 – Andres 2013-03-03 04:31:18