UserControl Focus Issue - Focus () иногда возвращает false - PullRequest
2 голосов
/ 30 декабря 2008

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

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

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

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

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

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

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

Ответы [ 2 ]

4 голосов
/ 16 марта 2009

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

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

1 голос
/ 25 августа 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...