Сбросить "сигналы клавиатуры" в ToolStrip

Мы отображаем поддиалог из ячейки нашего элемента управления сеткой. Диалог содержит ToolStrip с элементами с амперсандами для быстрого доступа к ним с клавиатуры. Все работает нормально: мы можем нажать ALT, чтобы показать эти сигналы клавиатуры, и / или выполнить такие нажатия клавиш, как ALT+M, C, чтобы активировать соответствующие команды ToolStrip.

Но если мы откроем одно из выпадающего списка нашей ToolStrip и не сделаем выбор, а затем щелкните за пределами нашего поддиалога, чтобы закрыть его таким образом, ToolStrip сходит с ума. Когда мы снова откроем диалоговое окно, сигналы клавиатуры изначально подчеркнуты, последний элемент верхнего уровня может быть выделен, и наши ALT-команды не работают.

Как сбросить ToolStrip, чтобы он работал правильно в этом сценарии?

1 ответ

Решение

Ранее мы использовали метод Hide ToolStripDropDown в событии OnHide нашего поддиалога, чтобы автоматически закрывать все активные выпадающие меню при закрытии диалога, но правильное решение должно быть:

fToolStripDropDownButtonClear.DropDown.Close(ToolStripDropDownCloseReason.ItemClicked)

Т.е. необходимо выполнить метод Close точно со значением параметра ItemClicked.

Другие вопросы по тегам