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

时间:2011-03-05 21:03:30

标签: winforms focus contextmenu dispose toolstripcontrolhost

根据Cody对this question的回答,我从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嵌入菜单内的自定义控件)

为什么在上帝的绿色地球上,我处理一个不再属于菜单的控件是否重要?

1 个答案:

答案 0 :(得分:1)

当您执行此操作时,您将从上下文菜单中删除焦点,因为当您删除它时,文本框已经具有焦点,ContextMenuStrip中没有任何内容可以重点关注。