根据 Cody 对这个问题的回答,我从 ContextMenuStrip 派生了一个类并处理 ProcessCmdKey。Enter当嵌入在菜单中的文本框具有焦点时,这成功地防止了菜单关闭。所以一切都很好,除了一件事。
按下 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 嵌入到菜单中)
为什么在上帝的绿色地球上,我处理一个不再是菜单一部分的控件很重要?