根据Cody对this question的回答,我从ContextMenuStrip中派生出一个类并处理ProcessCmdKey。当按下输入时,此功能可成功阻止菜单关闭,而菜单中嵌入的文本框具有焦点。所以一切都很好,除了一件事。Panel.Dispose关闭上下文菜单,为什么?
在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嵌入到菜单中)
为什么在上帝的绿色地球上放置一个不再是菜单一部分的控件?
检查此答案为更好的方式:http://stackoverflow.com/questions/5207767/net-multiple-toolstripbuttons-in-a-single-contextmenuitem/5207964#5207964 – 2011-03-06 01:12:06
我刚注意到这个问题,并感觉有点不得不回复,因为我是给你最初解决方案的人。在这种情况下,我同意汉斯。我试图在你之前的问题的评论中建议我不认为使用“ContextMenuStrip”是解决你的问题的最佳方法,但由于直接解决方案非常简单,我试图提供一个有用的答案。如果你浪费了一大堆时间让CMS工作,我很抱歉。我在这里不知道解决方法;我自己并没有使用CMS,原因很多,包括Hans讨论的脆弱行为。 – 2011-03-06 07:52:29
@Cody,完全没有。我非常感谢你的回答。处理问题可能还没有被克服,即使不是,我总能想出一种方法将这些控件添加到某些列表中,以便在菜单关闭后处理。 – 2011-03-06 09:44:06