Panel.Dispose关闭上下文菜单,为什么?

根据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嵌入到菜单中) 为什么在上帝的绿色地球上,我处理一个不再属于菜单的控件是否重要?     
已邀请:
当你这样做时,你正在从上下文菜单中删除焦点,因为当你删除它时,文本框已经有了焦点,现在
ContextMenuStrip
中没有任何东西有了焦点。     

要回复问题请先登录注册