0

この質問に対する 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 を使用してメニュー内に埋め込まれたカスタム コントロールです)

なぜ神の緑の地球上で、もはやメニューの一部ではないコントロールを処分することが重要なのですか?

4

1 に答える 1

1

これを行うと、コンテキストメニューからフォーカスが削除されます。これは、削除したときにフォーカスがあったのはテキストボックスであったため、現在、ContextMenuStripフォーカスのあるものは何もありません。

于 2011-03-05T21:53:00.267 に答える