Member 11040029 Ответов: 1

Winform tabcontrol неожиданное изменение фокуса при переключении между страницами вкладок


Привет,

У меня есть tabcontrol, на котором я размещаю формы в разделе tab pages. В форме есть элементы управления, такие как кнопка и текстовые поля.

Предположим, что в элементе управления вкладками открыто 2 страницы вкладок.
Также допустим, что есть 4 элемента управления на форме в tab-page-1 и 4 элемента управления на форме в tab-page-2.

Пользователь находится на вкладке-Страница-1, а фокус-на элементе управления-3. Теперь пользователь переключается на tab-page-2 и вводит некоторые входные данные в элемент управления 1 и фокусируется на элементе управления 2.
Теперь пользователь переключается на вкладку-Страница-1. Помните, что на вкладке-Страница-1 основное внимание было уделено элементу управления-3. Но, как только переключение сделано, фокус снова смещается на Control-1 на tab-page-1.
Кроме того, если теперь вы переключитесь обратно на вкладку-страницу-2, где фокус был на control-2, фокус теперь находится на control-1.

Я хочу оставаться в центре внимания на элементе управления, где пользователь оставил при переключении между вкладками.

Любая помощь и предложение глубоко принимаются.

Спасибо!

Что я уже пробовал:

Я пробовал обрабатывать различные события tab-control, а также страницы вкладок и формы, содержащиеся в них, такие как LostFocus, Deselecting, Deselected, Selecting, Selected, Leave, Enter и многое другое, но ни один из них не работает.
Все события огневого поста фокус потерян.

EDIT frim Chill60. Я дал оперативникам решение, но они не убеждены. Натыкаюсь на это, чтобы посмотреть, есть ли у кого-нибудь идея получше

CHill60

Захватив свойства tabindex, как вы вводите каждый элемент управления на элемент управления TabControl. Далее в разделе мы рассмотрим способ для вкладок вручную установить фокус на соответствующий элемент управления

Member 11040029

привет, остынь...вот и весь вопрос..как захватить tabindex/control. Я не нахожу ни одного события, которое могло бы это сделать.

CHill60

Каждый элемент управления имеет событие Enter - Вы должны сделать все остальное (определить "текущий" элемент управления для этой вкладки, потенциально сохранить ссылку на каждую вкладку, дать фокус элемента управления, если вкладка будет повторно выбрана)

Member 11040029

да, я действительно знаю это, но что происходит, так это то, что как только вы пытаетесь изменить вкладку, tabcontrol перемещает фокус на самый первый элемент управления на странице внутри, а затем переходит к следующей вкладке. Таким образом, каждый раз ссылка меняется.

CHill60

Как насчет события отпуска тогда

Member 11040029

Братан..тогда на отпуске ссылка снова поменяется!

CHill60

Это не так уж сложно, "братан". Захватите последний элемент управления, который был сфокусирован на каждой вкладке, и снова сфокусируйтесь на нем, когда вы войдете в эту вкладку! Попробуйте поместить некоторую отладку в каждое событие и посмотреть,что происходит, когда и в каком порядке

Member 11040029

пожалуйста, оцените этот вопрос...больше пищит можете ответить

CHill60

Это так не работает. Это не инста

Member 11040029

Ммм, хорошо.но все эти решения не работают :(

1 Ответов

Рейтинг:
0

Gerry Schmitz

"Окно" может одновременно "фокусироваться" только на одном элементе управления.

Вкладки "активируются" и "деактивируются"; и в этом процессе элементы управления приобретают и теряют фокус.

Если вы хотите "отслеживать" фокус, вам нужно поддерживать "переменную" для каждой вкладки, которая содержит ссылку на последний элемент управления (на этой вкладке), чтобы иметь фокус.

Вы можете установить эту переменную, имея событие "got focus" для каждого подходящего элемента управления (на данной вкладке) и устанавливая эту переменную, когда элемент управления получает фокус.

(Вы "можете" также иметь доступ к текущему "активному элементу управления" (для вкладки / контейнера) и таким образом определять текущий фокус).

Когда вкладка (повторно)активирована / выбрана, проверьте переменную и установите фокус, если она имеет имя ссылки / элемента управления.


CHill60

:смех: по сути, то, что я уже объяснил оператору, но они изо всех сил пытаются заставить его работать, по-видимому