Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как съемулировать нажатие клавиши Tab? 
:(
    Опции темы
vlsaf
Дата 17.1.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Вопрос 1.
Можно ли события KeyDown или KeyPress заставить реагировать на нажатие на клавишу Tab?


Если нет, а наверно так и будет, то вопрос 2

Как программно съемулировать нажатие на клавишу Tab?


А вообще задача такая. Нужно по табу заставить перемещаться курсор в нужном мне порядке.
Если это на простой форме, то нет проблем. Я перенумеровываю поля и усё.

Если это TabControl и если я нахожусь на последнем поле первой вкладки, то мне надо переместиться на первое поле второй вкладки.

Но не могу поймать событие по KeyDown или KeyPress.

Если же я ловлю событие PreviewKeyDown, вот так
Код

private void textBox_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
 {
            if (e.KeyValue == 9)
            {
                tabControl.SelectedTab = tabPage_Parameter;
                textBox1_vfomTab2.Focus();
            }
            
 }


то я улетаю на второе поле.


Народ. Должно же это как-то просто решаться?

Это сообщение отредактировал(а) vlsaf - 17.1.2008, 17:05
PM   Вверх
Bogdan1024
Дата 17.1.2008, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 3
Всего: 13



if (e.KeyData == Keys.Tab) ...


--------------------
user posted image
PM MAIL   Вверх
vlsaf
Дата 17.1.2008, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



И в каком событии эту строку вставлять?
PM   Вверх
thomas
Дата 17.1.2008, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доцент... почти
***


Профиль
Группа: Завсегдатай
Сообщений: 1385
Регистрация: 3.10.2006
Где: " Сказочное королевство"

Репутация: 6
Всего: 65



vlsaf
Привет.
Цитата

то я улетаю на второе поле.

Проверь какой таб индекс у твоего textBox1_vfomTab2.
Сдается мне, что отличный от нуля.
Проверь и переустанови табиндексы у контролов на каждой вкладке табконтрола.

И по моему событие KeyPress самое то. Только писать надо по-умному
Код

if(e.KeyChar == 9) // 9 - индекс табкнопки? для Энтер знаю 13.


Успехов.


--------------------
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
PM MAIL   Вверх
Magnetic
Дата 17.1.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 111
Регистрация: 11.11.2006

Репутация: нет
Всего: 1



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


vlsaf, могу предложить сразу два немного индусских решений, на случай, если не появится более благоразумного  smile 
1. Кидаешь на первую вкладку кнопку с максимальным TabIndex для даной вкладки. Для чего - при нажатии Tab на последнем текстбоксе фокус перемещается на эту кнопку, потом в обработчике события Enter этой кнопки (не путать с нажатием клавиши Enter) делаешь нужный тебе переход. Осталось сделать кнопку невидимой на форме. Visible=false нельзя, т. к. фокус кнопка не получит, событие Enter не сработает. Устанавливаешь такие свойства: FlatStyle=Flat, Text=" " (пробел обязателен), FlatAppearance.BorderSize = 0, ну и цвет тоже подгоняешь под фон.
2. Oписаную выше кнопку бросаешь на следующую владку с минимальным TabIndex, а в коде который ты написал в первом своем посте фокус передаешь не на первый текстбокс, а на эту кнопку.
--------------------
Dude, where's my car?
PM MAIL   Вверх
vlsaf
Дата 17.1.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 9.5.2007

Репутация: нет
Всего: 1



Если TabStop поставить в False, тогда  можно выловить событие KeyPress

Только в этом случае по Tab в это поле уже не попадешь.

Но это уже 80% решения.


Засада  smile 

На радиокнопках эта идеология не катит.

Будем искать другой вариант.

Это сообщение отредактировал(а) vlsaf - 18.1.2008, 11:11
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0929 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.