Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Управление с клавиатуры ?


Автор: Miller_time 16.11.2006, 10:52
   
Код
  
 if (Keys.T)
            {
                dialog_1 = 5;

            }



Хочется сделать что при нажатии на клавишу проиходило какоето дествие. Может код не верен ? 
Заранее спасибо!

Автор: mr.DUDA 16.11.2006, 11:41
1) Полный код в студию.
2) Обрабатывать надо событие KeyDown, если у нас контрол или форма, и сравнивать e.KeyCode с Keys.T и так далее.

Автор: Miller_time 16.11.2006, 12:09
Это и есть весь кодsmile

 smile 

Автор: HalkaR 16.11.2006, 13:21
Miller_time, обработчик KeyDown ставь в форме и у формы выставляй KeyPreweiv = true.
Код

private void form_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Escape)
                this.Close();
        }

Автор: Softaz 16.11.2006, 13:47
Цитата(Miller_time @  16.11.2006,  10:52 Найти цитируемый пост)
Хочется сделать что при нажатии на клавишу проиходило какоето дествие.

Если ты хочешь, чтобы действие происходило незавимо, активен ли контрол или нет, то надо ставить hook

Добавлено @ 13:47 
#независимо

Автор: Miller_time 17.11.2006, 09:20
Пробовал сделать выше перечисленно 
 
Код


        private void form_KeyDown(object sender, KeyEventArgs e)
        {
            while (true)
            {
                if (e.KeyCode == Keys.Escape)
                    this.Close();

            }
        }





Поставил в цикл, но все равно данный код не закрывает приложение, Что я не так сделал.

Код расположил в нутри 
public partial class Form1 : Form

Автор: Softaz 17.11.2006, 09:51
Miller_time, запомни: если тебе надо закрыть форму по нажатию на кнопку, создавай тему типа "как закрыть форму, если нажата Esc", а не "Управление с клавиатуры" (непонятно как - может это у тебя резидентная программа без формы)

Поставь на форму кнопку типа "Закрыть"
Код

private void button2_Click(object sender, EventArgs e)
        {
            this.Close();
        }


В пропертях формы укажи
Код

CancelButton = button2


Автор: mr.DUDA 17.11.2006, 10:01
Цитата(Miller_time @  17.11.2006,  08:20 Найти цитируемый пост)
Поставил в цикл,

убери цикл

Автор: Miller_time 17.11.2006, 10:02
Нет мне не нужна что бы моя программа закрывалсь, просто выше представлен пример я через него и опиываю !

Так у меня тоже закрывается.


Мне нужна что скажем при нажатии на клавишу  w изменялиь координаты картинки.

Автор: Miller_time 17.11.2006, 10:42
Убрал цикл все ранво не помогло 


        private void form_KeyDown(object sender, KeyEventArgs e)
        {

            if (e.KeyCode == Keys.W)
            {
                pictureBox1.Left += 10;
            }

        }



Картинка не двигается и все .

Автор: HalkaR 17.11.2006, 11:22
Miller_time, form.Invalidate() попробуй чтоли. smile

Автор: mr.DUDA 17.11.2006, 11:36
Чтоб форма обрабатывала клавиатурные сообщения (независимо от того, есть вложенные контролы или нет), нужно у формы выставить свойство KeyPreview=true

Добавлено @ 11:37 
HalkaR же об этом говорил  smile 

Автор: _Equilibrium_ 17.11.2006, 11:48
Код

   static int y = 65;
        
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.W)
            {
                pictureBox1.Location = new System.Drawing.Point(46, y); y -= 10;
            }
        }


Лол..  smile 

Автор: Miller_time 17.11.2006, 12:53
Сделал все как сказанно, но не в какую не реагирует на клавиатуру.

Автор: HalkaR 17.11.2006, 12:59
Miller_time, form_keydown вообще срабатывает?

Автор: _Equilibrium_ 17.11.2006, 13:09
Хм... а ты этот код просто копипастишь в form.cs или вс0 же подписываешься на событие?  smile 

Автор: Miller_time 17.11.2006, 20:13
Хм. не поянл тебя изменил еа форме тот параметр.
И скопировал предоставленый до этого код ? А что не так ? 
Можна пример сделай плиз если не трудна. smile  smile 

Автор: _Equilibrium_ 18.11.2006, 10:24
Заходишь в студию, создаешь новый проект... кидаешь на форму pictureBox, картинку вставь какую-нибудь.
Потом выбираешь форму. Там где у тебя properties, т.е. где свойства формы, есть кнопка с "Молнией" называется "Events", жмешь на нее и там в списке выбираешь KeyDown, щелкаешь мышью два раза... появляется окно редактирования кода... там где курсор мигает, вставляешь это:

Код

            if (e.KeyCode == Keys.W)
            {
                pictureBox1.Location = new System.Drawing.Point(46, y); y -= 10;
            }


Над строчкой: 

Код

private void Form1_KeyDown(object sender, KeyEventArgs e)


 вставляешь:

Код

static int y = 65;


Надеюсь я првильно понял, что ты не понял... smile 
        
    

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)