Сбросить "сигналы клавиатуры" в ToolStrip
Мы отображаем поддиалог из ячейки нашего элемента управления сеткой. Диалог содержит ToolStrip с элементами с амперсандами для быстрого доступа к ним с клавиатуры. Все работает нормально: мы можем нажать ALT, чтобы показать эти сигналы клавиатуры, и / или выполнить такие нажатия клавиш, как ALT+M, C, чтобы активировать соответствующие команды ToolStrip.
Но если мы откроем одно из выпадающего списка нашей ToolStrip и не сделаем выбор, а затем щелкните за пределами нашего поддиалога, чтобы закрыть его таким образом, ToolStrip сходит с ума. Когда мы снова откроем диалоговое окно, сигналы клавиатуры изначально подчеркнуты, последний элемент верхнего уровня может быть выделен, и наши ALT-команды не работают.
Как сбросить ToolStrip, чтобы он работал правильно в этом сценарии?
1 ответ
Ранее мы использовали метод Hide ToolStripDropDown в событии OnHide нашего поддиалога, чтобы автоматически закрывать все активные выпадающие меню при закрытии диалога, но правильное решение должно быть:
fToolStripDropDownButtonClear.DropDown.Close(ToolStripDropDownCloseReason.ItemClicked)
Т.е. необходимо выполнить метод Close точно со значением параметра ItemClicked.