この質問に対する Cody の回答に従って、ContextMenuStrip からクラスを派生させ、ProcessCmdKey を処理しました。Enterこれにより、メニュー内に埋め込まれたテキストボックスにフォーカスがあるときに押すと、メニューが閉じるのを防ぐことができます。したがって、1つのことを除いてすべてが順調です。
Enter キーを押すと、Textbox がメニューから削除され、このコントロールを破棄するとメニューが閉じます。私がこれを行うとき:
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()
メニューは閉じています。3 行目をコメントアウトすると、メニューは開いたままになります。(ちなみに、m_inputPanel.Parent は、ToolStripControlHost を使用してメニュー内に埋め込まれたカスタム コントロールです)
なぜ神の緑の地球上で、もはやメニューの一部ではないコントロールを処分することが重要なのですか?