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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2009, 17:06   #1
blacknotblack
 
Регистрация: 31.10.2009
Сообщений: 5
По умолчанию Реакция объекта на нажатие клавишь (VС#)

На форме расположен объет(в данном случае кнопка), который должен менять свою позицию в соответсвии нажатой клавиши.
Проблема заключаеться в том, что реакция происходит только на буквенные и цифровые клавиши. А нужно добиться управления объектом стрелочками. В чем проблема не могу разобраться

Код:
    public partial class Form1 : Form
    {
        const int VK_Space = 0x20;
        const int VK_Down = 0x28;
        const int VK_RETURN = 0x0D;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if(e.KeyChar == '1') button1.Location = new Point(21, 21);
            if (e.KeyChar == VK_Space) button1.Location = new Point(210, 100);
            if (e.KeyChar == VK_Down) button1.Location = new Point(50, 50);   // не реагирует
            if (e.KeyChar == VK_RETURN) button1.Location = new Point(10, 10); // не реагирует
            if (e.KeyChar == (Char)Keys.Return) button1.Location = new Point(10, 10); // не реагирует

        }
    }
ойбля, не в тот раздел(

Последний раз редактировалось blacknotblack; 31.10.2009 в 19:28.
blacknotblack вне форума Ответить с цитированием
Старый 31.10.2009, 21:24   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

для стрелок попробуйте использовать событие procedure WM_KeyUp...
Код:
private void Form1_KeyUp(object sender, KeyUpEventArgs e) {
  if (e.KeyChar == (Char)Keys.left) ...
  if (e.KeyChar == (Char)Keys.right) ...
  if (e.KeyChar == (Char)Keys.up) ...
  if (e.KeyChar == (Char)Keys.down) ...
}
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 01.11.2009, 15:02   #3
blacknotblack
 
Регистрация: 31.10.2009
Сообщений: 5
По умолчанию

при таком описании
Код:
e.KeyCode == Keys.Left
не реагирует не только на стрелочки, а вообще на всё
blacknotblack вне форума Ответить с цитированием
Старый 01.11.2009, 15:31   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

си под рукой нема, тики дельфи... но вот что имеется ввиду:
Код:
//события в компоненте...
procedure WMKeyUp(var msg:TWMKeyUp);message WM_KEYUP;
///
procedure Tpgl.WMKeyUp(var msg: TWMKeyUp);
begin
 inherited;

 if msg.CharCode= 37 then ; // left
 if msg.CharCode= 39 then ; // reight
 if msg.CharCode= 38 then ; // up
 if msg.CharCode= 40 then ; // down
end;
смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 02.11.2009, 21:16   #5
blacknotblack
 
Регистрация: 31.10.2009
Сообщений: 5
По умолчанию

дело в том, что мне нужно это без АПИ. Я просто разделом ошибся
blacknotblack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Долгое нажатие клавиши в KeyDown как одно нажатие marina15056 Общие вопросы Delphi 7 16.08.2009 00:22
С помощью методов и свойств объекта осуществляется управление терминалом. Имя (идентификатор) объекта User>lia Общие вопросы Delphi 4 16.01.2009 16:37
Нажатие клавишь Slash Общие вопросы Delphi 2 06.06.2008 08:15
Нажатие клавишь мыши L_M Помощь студентам 2 26.02.2008 01:15
Реакция на сочетание клавишь micaell Win Api 3 20.04.2007 02:13