У меня есть настраиваемый элемент управления с помощью ToolStripDropDownButton. В ToolStripDropDownButton имеется ряд элементов инструментальной панели (в частности, настраиваемые элементы инструментальной панели, которые имеют флажки). Пользователь может выбрать те элементы, которые они хотят, и обрабатывать событие DropDownClosed, а затем использовать эти отмеченные элементы.ToolStripDropDownButton - изменение выпадающего поведения с помощью клавиши Esc
Задача предназначена для использования пользователем Отменить его выбор, нажав кнопку выхода. Проблема в том, что событие DropDownClosed также срабатывает при нажатии клавиши Escape. Поэтому, когда пользователь выбирает параметры и хочет попасть в Escape, чтобы отменить выбор, происходит событие DropDownClosed, и я в конечном итоге «применяю» эти настройки.
Я пытался играть вокруг со следующими переопределениями по контролю размещено ToolStripDropDownButton:
protected override bool ProcessCmdKey
protected override bool ProcessKeyPreview
protected override void WndProc
без особого успеха, как выпадающие кажется, чтобы скрыть, прежде чем какие-либо из этих событий обрабатываются. Каков наилучший способ изменить это поведение?
Я уже пробовал это, но дочерние элементы управления обрабатывают событие до основного элемента управления. В форме вы можете установить для Form.KeyPreview значение true, чтобы получать ключевые события перед элементом управления. Но пользовательские элементы управления различны. В любом случае даже попытка обработать ключевое событие, похоже, произойдет * после того, как * раскрывающийся список закрылся. Я могу переопределить метод OnDropDownClosed, но мне нужно указать, был ли нажат Esc. – MoSlo
Как пользователь должен указать, что выбор должен быть применен - щелкнув в любом месте вне меню ToolStrip?Если это так, не лучше ли добавить параметр «Применить» в меню ToolStrip? Тогда пользователь (и ваш код ...) точно знает, когда применять изменения и когда отменять. – Veldmuis