![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
vlsaf |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Всем привет.
Есть сложная форма со сплит контейнерами, Tab контролы, groupBox и т.д. Когда я нахожусь на контроле "1", то после нажатия на Tab хочу переместиться в контрол "2". Но не выходит!!! Меня уносит на "а". Не пойму, почему ![]() Как мне передать фокус на контрол "2"? ![]() вот такой код при перехвате нажатия на клаву
Как вы уже догадались gridLookUpEdit_KundeDaten это название для контрола "2". Я уже у Focus() и Show() засовываю. По барабану. Они выполняются, но фокус ввода все равно прыгает на "а". ![]() |
|||
|
||||
Walker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 5 Всего: 16 |
Добрый день!
Работаете с дизайнером студии? Тогда View/Tab Order. Немножко поманипулируете и поймёте принцип. Удачи! -------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
vlsaf |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
2 Walker,
Ну почему так коротко. View/Tab Order. tab order, порядок фокусов на фрейме Уже заигрался. Не помогает. В том то и вопрос, чтобы я не зависел от tab order, когда нахожусь в положении "1". Для этого ручками хочу переместить фокус ввода на "2". View Это, извиняюсь за ламерский вопрос, свойство или методы? Чего? Куда смотреть? Это сообщение отредактировал(а) vlsaf - 21.5.2008, 11:55 |
|||
|
||||
Walker |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 363 Регистрация: 23.10.2006 Репутация: 5 Всего: 16 |
Tab Order - пункт падающего меню View в Visual Studio. При его выборе. У Вас будет отображаться на контролах порядковый номер перехода фокуса. Меняете его, буквально щёлкая по нему мышкой, добиваетесь нужного порядка.
-------------------- "От вчерашних побед остаётся усталость, если завтрашний день не сулит ничего..." |
|||
|
||||
vlsaf |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Это работает при простом расположении контролов.
Если использовать TabControl(ы), то мы застреваем на вкладке Таба. Вопрос в другом. Почему фокус не перемещается куда надо при выполнении gridLookUpEdit_KundeDaten.Focus(); ??? |
|||
|
||||
vlsaf |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Я разверну вопрос
Всем извеснто, что порядок обхода контролов при нажатии на клавишу Tab определнется свойством TabIndex у контрола. Этот индекс можно задавать или ручками или клацая пункт падающего меню View в Visual Studio. При его выборе будет отображаться на контролах порядковый номер перехода фокуса. Меняем его, буквально щёлкая по нему мышкой, и добиваемся нужного порядка. Но не всегда удается переместиться с контрола на контрол. Если я нахожусь в TabControl. Например TabControl имеет три вкладочки. Если я нахожусь на последнем элементе упревления первой вкладки, то на вторую по табу уже не попадаю. Тогда я перехватываю нажатие на Tab и использую такую конструкцию
Где myTextEdit находится уже на второй вкладке. Но и это конструкция срабатывает только, если я прыгаю по вкладкам внутри TabControl. Если я нахожусь на последнем элементе последней вкладки TabControl(а), то при нажатии на Tab хочу вообще уйти с TabControl(а) на другой элемент в совсем другом месте. Но не выходит. TabControl меня не отпускает Как уйти? Простое myControl2.Focus(), при условии, что myControl2 находится за пределами Табконтрола , не уводит меня с него. Не знаю, что делать!!! |
|||
|
||||
tea_723 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 13.9.2007 Репутация: нет Всего: нет |
Создай event "контрол "1"_PreviewKeyDown" и внутрь впиши чего нибудь типа:
Кроме того в свойствах основной формы не забудь выставить KeyPreview = True Не уверен что 100% нужно, но я бы поставил TabIndex у container для gridLookUpEdit_KundeDaten равным контрол "1".TabIndex +1 |
|||
|
||||
vlsaf |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Ловлю прерывание именно так, как ты сказал. Через
"Ура" появляется, а реально фокус улетает на "a" ![]()
А что это дает. У меня и так PreviewKeyDown отрабатывает. Впрочем поставил и ситуация не изменилась. Индекс у контрола "2" никак не влияет на поведение фокуса. Хоть 0 хоть 10000 по барабану. Руки уже опускаются. Просто не врублюсь, как такое может быть ![]() |
||||
|
|||||
tea_723 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 13.9.2007 Репутация: нет Всего: нет |
А event Enter для gridLookUpEdit_KundeDaten срабатывает? Если да, то в этом event посмотри свойство ContainsFocus у TabControl из которого ты приходишь. Можно здесь же попробовать TabControl.SendToBack()
Попробуй переместить "а" из TabControl куда-нибудь влевую часть, что получится? |
|||
|
||||
moucharaby |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 23.5.2008 Репутация: нет Всего: нет |
Дело в том, что для передачи фокуса используется не метод focus(), а метод select().
То есть в данной ситуации надо сделать так: private void textBox_Toutentext_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) { if (e.KeyCode == Keys.Tab && !e.Shift) { gridLookUpEdit_KundeDaten.Select(); } } Удачи! |
|||
|
||||
tea_723 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 13.9.2007 Репутация: нет Всего: нет |
Бред какой-то, но для ComboBox проходит только:
Причем просто Select() не идет, можно только Select(start,end). Чтобы фокус переместился обязательно что-то должно быть выделено! Хотя по идее Focus() должно быть достаточно, CanFocus возвращает true. |
|||
|
||||
vlsaf |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 423 Регистрация: 9.5.2007 Репутация: нет Всего: 1 |
Событие Enter срабатывает. Свойство ContainsFocus дает True. TabControl.SendToBack() не влияет ни на что. Если я перемещаю "а" в левую часть, то при нажатии таба фокус остается на "1" ========================================================================= 2 moucharaby Select я пробывал. Не помогает. Видно, как текст селектируется, но потом селект исчезает и фокус возвращается на "а". |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |