Проблема с фокусом UserControl - Focus () иногда возвращает false

У меня есть пользовательский элемент управления, который ведет себя аналогично элементу управления вкладкой. Заголовки вкладок - это экземпляры UserControl, которые переопределяют события Paint, чтобы они выглядели индивидуально.

Чтобы использовать события проверки для различных элементов управления на наших страницах вкладок, когда пользователь нажимает на заголовки вкладок, мы устанавливаем фокус на пользовательский элемент управления TabHeader.

Я заметил, что Control.Focus() иногда возвращает false, но в документации не говорится, почему Control.Focus() когда-либо возвращает false, кроме того, что элемент управления не может получить фокус. Но я не знаю почему.

Вот что я вижу: Если мой TabHeaderUserControl не содержит субэлементов управления, и я вызываю myControl.Focus() из события MouseClick, фокус возвращает true.

Если мой TabHeaderUserControl содержит подэлемент управления, и я вызываю myControl.Focus() из события MouseClick, фокус возвращает false.

Если мой TabHeaderUserControl содержит подэлемент управления, и я вызываю myControl.subControl.Focus() из события myControl.MouseClick, фокус возвращает true.

Кто-нибудь может это объяснить?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
5 563
2

Ответы 2

Вызов Focus() на UserControl выбирает первый дочерний элемент управления этого UserControl. Это действительно объяснило бы ваше поведение.

Вы можете попробовать вызвать в Select() вместо Focus() и посмотреть, работает ли это.

Несмотря на то, что этому ответу было несколько лет, это решение сработало для меня. У меня был пользовательский элемент управления, который был включен при щелчке по узлу в древовидном представлении, и в зависимости от того, добавлял, редактировал или удалял пользователь, другой элемент управления в пользовательском элементе управления нуждался в фокусе. Select () работал как шарм. Спасибо.

Mike Malter 24.05.2011 02:15

Вы пробовали "Control.ContainsFocus"? Предполагается, что он вернет true, если какой-либо из дочерних элементов управления сфокусирован на нем. Ссылка MSDN

Спасибо, Джеймс

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