根據Cody對this question的回答,我從ContextMenuStrip中派生出一個類並處理ProcessCmdKey。當按下輸入時,此功能可成功阻止菜單關閉,而菜單中嵌入的文本框具有焦點。所以一切都很好,除了一件事。Panel.Dispose關閉上下文菜單,爲什麼?
在Enter按鈕上,我從菜單中刪除了文本框,並且處置該控件導致菜單關閉。當我這樣做時:
If (m_inputPanel IsNot Nothing) Then m_inputPanel.Hide()
If (m_inputPanel IsNot Nothing) Then m_inputPanel.Parent.Controls.Remove(m_inputPanel)
If (m_inputPanel IsNot Nothing) Then m_inputPanel.Dispose()
菜單已關閉。當我將第三行註釋掉時,菜單仍然打開。 (順便說一句,m_inputPanel.Parent是一個自定義控件,它使用ToolStripControlHost嵌入到菜單中)
爲什麼在上帝的綠色地球上放置一個不再是菜單一部分的控件?
檢查此答案爲更好的方式:http://stackoverflow.com/questions/5207767/net-multiple-toolstripbuttons-in-a-single-contextmenuitem/5207964#5207964 – 2011-03-06 01:12:06
我剛注意到這個問題,並感覺有點不得不回覆,因爲我是給你最初解決方案的人。在這種情況下,我同意漢斯。我試圖在你之前的問題的評論中建議我不認爲使用「ContextMenuStrip」是解決你的問題的最佳方法,但由於直接解決方案非常簡單,我試圖提供一個有用的答案。如果你浪費了一大堆時間讓CMS工作,我很抱歉。我在這裏不知道解決方法;我自己並沒有使用CMS,原因很多,包括Hans討論的脆弱行爲。 – 2011-03-06 07:52:29
@Cody,完全沒有。我非常感謝你的回答。處理問題可能還沒有被克服,即使不是,我總能想出一種方法將這些控件添加到某些列表中,以便在菜單關閉後處理。 – 2011-03-06 09:44:06