Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2013, 17:09   #1
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию KeyPressed задержка

Думаю те, кто пытались передвигать компоненты по форме нажатием клавиш в методе KeyPressed сталкивались с задержкой в начале нажатия.
Я это исправлял, делая булевы переменные для нужных кнопок и задавал им значения в KeyUp и KeyDown, а в таймере проверял переменные и двигал.
Ну, это ясно, но что делать, если мне нужно сделать так со всей клавиатурой? Неужели нужно делать переменные для всех клавиш на клавиатуре, или есть другой способ? Заранее спасибо!
Максим139 вне форума Ответить с цитированием
Старый 27.05.2013, 17:51   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
в методе KeyPressed
KeUp-KeyDown разве нет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2013, 20:03   #3
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
KeUp-KeyDown разве нет?
Нет. KeyUp срабатывает только тогда, когда клавиша отпускается. Нужно, что бы работало при нажатии и удержании. А KeyDown похож работой на KeyPressed, тоесть с задержкой в начале.
Максим139 вне форума Ответить с цитированием
Старый 27.05.2013, 20:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вообще-то задержка эта, если не ошибаюсь, задается в настройках повторов в свойствах клавы. Так что не факт что удастся так вот обойти.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.05.2013, 21:08   #5
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

Так я ж писал, что можно в KeyDown присваивать в переменной true, а в KeyUp - false. Но как сделать так, что бы не пришлось делать переменную для каждой клавиши?
Максим139 вне форума Ответить с цитированием
Старый 27.05.2013, 22:13   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так а зачем лишние переменные?
Неужели нельзя обрабатывать все только в KeyDown?
Она то и срабатывает практически циклически пока клавиша нажата.
KeyUp то тут зачем?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.05.2013, 00:16   #7
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

Вопрос:
Цитата:
Сообщение от Stilet Посмотреть сообщение
Так а зачем лишние переменные?
Неужели нельзя обрабатывать все только в KeyDown?
Она то и срабатывает практически циклически пока клавиша нажата.
Ответ:
Цитата:
Сообщение от Максим139 Посмотреть сообщение
KeyDown похож работой на KeyPressed, тоесть с задержкой в начале.
Вопрос:
Цитата:
Сообщение от Stilet Посмотреть сообщение
KeyUp то тут зачем?
Ответ:
Цитата:
Сообщение от Stilet Посмотреть сообщение
KeUp-KeyDown разве нет?
Всё уже было обсуждено. Если делать через переменные - нет задержки, а если через KeyDown - есть.
Максим139 вне форума Ответить с цитированием
Старый 28.05.2013, 00:29   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

что за задержка такая таинственная, и самое интересное как переменные ее побеждают?
eval вне форума Ответить с цитированием
Старый 28.05.2013, 03:01   #9
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

можно напрямую использовать if(Keyboard.IsKeyDown(KEY)) в таймере и не будет задержки
m0nax вне форума Ответить с цитированием
Старый 28.05.2013, 09:16   #10
Максим139
Пользователь
 
Регистрация: 20.02.2011
Сообщений: 80
По умолчанию

Цитата:
Сообщение от m0nax Посмотреть сообщение
можно напрямую использовать if(Keyboard.IsKeyDown(KEY)) в таймере и не будет задержки
Спасибо. Жаль только, что придётся подключать .net framework 4 версии.
Максим139 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть в VBA аналог "repeat until keypressed" (из Pascal) ? (-) novak_26 Microsoft Office Excel 3 28.02.2010 19:02
аналог "keypressed" myke Общие вопросы C/C++ 7 07.12.2009 18:25
Компилятор не распазнает функцию readkey и keypressed _PROGRAMM_ Паскаль, Turbo Pascal, PascalABC.NET 2 09.09.2009 16:06
Keypressed RealSHELS Общие вопросы Delphi 3 06.05.2008 21:01
Аналог ClrScr & KeyPressed в Delphi NovaC Общие вопросы Delphi 4 19.12.2007 12:26