Согласно ответу Коди на этот вопрос , я извлек класс из 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)
Почему на Божьей Зеленой Земле имеет значение, что я располагаю элементом управления, который больше не является частью меню?