Я создал настраиваемый элемент управления, который расширяет GroupBox. Этот элемент управления поддерживает свертывание и расширение, и я использую GroupBoxRenderer и ButtonRenderer, чтобы он выглядел как типичный GroupBox с кнопкой в углу. Я обработал все соответствующие события мыши, которые эффективно заставляют «кнопку» вести себя и выглядеть как обычная кнопка. Теперь я столкнулся с проблемой, когда GroupBox не получает фокуса с помощью TabStop. Есть ли в любом случае, что я могу получить мой Collapsable GroupBox для получения фокуса с TabStop?TabStop и Focus на GroupBox
Я надеялся, что смогу использовать трюк от How to set focus to a control after validation in .NET, чтобы установить фокус в событии Enter, но у меня не было хорошего способа определить, когда он должен фактически получить фокус. Возможно, я мог бы найти способ найти братьев и сестер со следующим самым высоким и самым низким TabIndex (или ChildIndex, если тот же TabIndex), а затем определить, потеряли ли они фокус, но это кажется немного взломанным и имеет высокий шанс взлома, если я не получу это точно.
Примечание: Я изначально создать пользовательский элемент управления, но это не то, что я хотел по разным причинам, включая:
- Это не элемент управления, который содержит кнопку и GroupBox (это просто так случается, вроде выглядеть именно так), это Groupbox
- Гибкость
- Связь между бэкэнд код и UI
- Динамическая компоновка
- Shared во многих проектах, требующих поддержки Toolbox и Custo mising интерфейс и расположение всего элемента управления
Вот как это выглядит в развернутом:
И теперь, когда это было свернуто (и имеет фокус):
Я не получаю это, вы сказали, что 'расширяет GroupBox' который я думаю, это своего рода наследство, но если это так, почему вы должны использовать' GroupBoxRenderer'? Каков фактический базовый класс вашего пользовательского «GroupBox»? BTW, «GroupBox» не поддерживает фокусируемость. Я не думаю, что «GroupBox» нуждается в такой функции, не могли бы вы объяснить об этом больше? Или вы хотите, чтобы он мог получать фокус, чтобы обрабатывать некоторые связанные с фокусом события, такие как «Enter» и «GotFocus»? –
@KingKing Я наследую GroupBox, но переопределяю OnPaint. Мне нужно сделать все, иначе текст GroupBox окажется за кнопкой collapse/expand (см. Изображения, которые я добавил). Чтобы быть понятным, GroupBox может получать фокус программно, но поскольку он является статическим контролем, он не получит фокуса через механизм TabStop. – Steiny