Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.68/100: Рейтинг темы: голосов - 100, средняя оценка - 4.68
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
1

Если нажата клавиша, выполнить действие...

05.11.2011, 17:58. Просмотров 20150. Ответов 22
Метки нет (Все метки)

Как сделать, чтобы:
Если нажата клавиша, допустим Enter, то загрузится Paint
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2011, 17:58
Ответы с готовыми решениями:

Если число от 0 до 5 выполнить действие
Извиняюсь, но не смог найти ответ на свой вопрос, в интернете. как правильно написать в c# int...

Выполнить действие если в тексте встречается слово? как?
Что надо прописать в условии IF, чтобы действие происходило при условии нахождения в тексте нужного...

Проверить нажата ли клавиша
Можно ли в консольном приложении отследить нажата ли какая-нибудь клавиша или нет? Конкретно мне...

Определить какая клавиша нажата
Здравствуйте, я пишу мини игру и не необходимо создать управление с клавиатуры. Так вот, скажите...

22
34 / 34 / 3
Регистрация: 12.10.2011
Сообщений: 175
05.11.2011, 18:04 2
нажата клавиша где?
если в главном окне программы, то добавляешь обработчик Form1_KeyDown и:

C#
1
if (e.KeyCode == 13) Process.Start("mspaint");
если вообще, в системе даже при том, что окно программый не в фокусе, то это API-функции уже
1
Level 2
400 / 274 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
05.11.2011, 18:06 3
C#
1
2
3
4
5
public void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
        Process.Start("Путь_к_Paint");
}
1
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
05.11.2011, 18:34  [ТС] 4
Спасибо..

Добавлено через 24 минуты
Хм. Странно.
Не тот и не тот код не работают.
Делаю всё правильно, ошибок нету.
Запускаю программу, жму на клавишу Enter, не чего не происходит.
Сделал ещё так:
C#
1
2
3
4
5
6
7
8
9
10
11
public void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
        MessageBox.Show("Вы нажали клавишу");
}
//И так тоже
public void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == 13) MessageBox.Show("Вы нажали клавишу")
}
//Но не чего не происходит.
0
Level 2
400 / 274 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
05.11.2011, 19:02 5
Поставьте в свойствах формы KeyPreview = true;
0
764 / 544 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
05.11.2011, 19:05 6
Цитата Сообщение от Xiros Посмотреть сообщение
C#
1
public void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == (char)13) MessageBox.Show("Вы нажали клавишу") } //Но не чего не происходит.
Добавте char
0
6 / 6 / 0
Регистрация: 21.12.2009
Сообщений: 68
05.11.2011, 19:07 7
Может ты в событиях Form1_KeyDown не добавил.
0
34 / 34 / 3
Регистрация: 12.10.2011
Сообщений: 175
05.11.2011, 19:14 8
попробуй с обработчиками KeyPreview или KeyPress
0
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
05.11.2011, 19:15  [ТС] 9
Vitail - Пишет ошибку
Оператор == не может применятся к операндам System.Windows.Forms.Keys и char
0
764 / 544 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
05.11.2011, 19:20 10
Цитата Сообщение от Xiros Посмотреть сообщение
Vitail - Пишет ошибку
Пардон уже заметил но не исправить в том посте .
Можно так
C#
1
2
3
4
5
6
7
 private void Form1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)13)
            {
               MessageBox.Show("Вы нажали клавишу");
            }
        }
0
34 / 34 / 3
Регистрация: 12.10.2011
Сообщений: 175
05.11.2011, 19:23 11
заработало это:

C#
1
2
private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{ if (e.KeyData == Keys.Enter) Process.Start("calc"); }
но не сразу проблема была в том, что на форме уже были контролы и один из них был выбран по дефолту...когда сделал их всех энаблэд = фолс, все стало гут)
убедись, что ни один из элементов на форме у тебя не выбран, а если и так, но примени обработчик для них всех)
0
Level 2
400 / 274 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
05.11.2011, 19:26 12
Ну так создайте не для формы, а для textBox'а событие KeyDown.
0
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
07.11.2011, 15:43  [ТС] 13
C#
1
2
3
4
5
        private void textBox_KeyDown(object sender, KeyEventArgs e)
        {
        if (e.KeyCode == Keys.Enter)
        MessageBox.Show("Лол");
        }
Блин. Почему всё таки не работает?
Пробовал всё. И KeyPress и KeyUP и KeyDown и т.д.
Не чё не помогает.
В чём проблема может быть?

P.S. Пытался не только с textbox
0
Level 2
400 / 274 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
07.11.2011, 15:50 14
Xiros, убедитесь что у формы стоит свойство KeyPreview = true;
0
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
07.11.2011, 16:02  [ТС] 15
Вот сейчас попробовал...
У формы стоит KeyPreview = true
C#
1
2
3
4
5
        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.F1)
            { MessageBox.Show("giga"); }
        }
Бестолку...
Можете выложить нормальный код? Очень прошу..
Если можно код, чтобы если Нажал Enter то в Textbox случилось то, что я потом укажу в коде.
Просто я понять не могу, что в этих keydown, keyup, keypress, что каждый из них и что с ними...
0
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
07.11.2011, 17:01 16
Вам все правильно ответили. Вот, посмотрите
0
Вложения
Тип файла: rar Enter.rar (37.2 Кб, 64 просмотров)
165 / 137 / 23
Регистрация: 02.01.2011
Сообщений: 913
07.11.2011, 17:05 17
Т.е. когда фокус на TextBox и нажимаете Enter ,получаете сообщение. Главное здесь - где фокус
0
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
07.11.2011, 18:00  [ТС] 18
Эх.
Всё таки я тупой
Наверно надо мне было сразу начинать с моего вопроса
(Просто хотел разобратся, но не понял)

А вопрос таков:
Нужно чтобы если я нажал Enter отправилось сообщение клиенту

Отправка клиент:
C#
1
2
3
4
5
6
7
8
9
private void button_send_Click(object sender, EventArgs e)
        {
                client.Writer.Write(box_message.Text);
                box_messages.Text += "[" + System.DateTime.Now.ToLongTimeString() + "]" + " " + box_name.Text + " :: " + box_message.Text + Environment.NewLine;
                box_message.Text = "";
                box_messages.Text += "";
                box_messages.SelectionStart = box_messages.Text.Length - 1;
                box_messages.ScrollToCaret();
        }
Отправка сервер:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void button_send_Click(object sender, EventArgs e)
        {
                Client c = server.GetClient(box_resiver.Text);
                if (c == null)
                {
                    MessageBox.Show("Клиент не найден!");
                    return;
                }
                if (c.ServerEnabled == false)
                {
                    MessageBox.Show("Нет связи с клиентом!");
                    return;
                }
                c.Writer.Write(box_message.Text);
                box_messages.Text += "[" + System.DateTime.Now.ToLongTimeString() + "]" + " " + box_name.Text + " :: " + box_message.Text + Environment.NewLine;
                box_message.Text = "";
                box_messages.Text += "";
                box_messages.SelectionStart = box_messages.Text.Length - 1;
                box_messages.ScrollToCaret();
        }
Вот теперь, нужно по нажатию Enter передать сообщению
У Клиента к Серверу
У Сервера к Клиенту

Люди добрые, помогите плиз.

P.S. Книжки нормальные про сетевые не могу найти так как там про консоль и т.п.
А мне нужно именно про winForms
0
dotFive
07.11.2011, 20:45
  #19

Не по теме:

C#
1
box_messages.Text += "";
я один не въезжаю в эту строчку?

0
6018 / 3425 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
08.11.2011, 12:15 20
Цитата Сообщение от dotFive Посмотреть сообщение
я один не въезжаю в эту строчку?
ну что тут непонятного? к пустой строке добавляется пустая строка, в результате получаем дважды пустую строку. Ход разработанный "нашими" спецслужбами для запутывания иностранных хакеров (у них от этого просто мозг взрывается).

Не по теме:

АААА!!!! я понял!.. dotFive, ты иностранный шпион 8-)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.11.2011, 12:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

определить какая клавиша была нажата
Подскажите пожалуйста как можно определить на KeyUP то, что был отпущен пробел???

Запоминать какая клавиша была нажата последней
Есть 2 button. Нужно как-то запоминать какая клавиша была нажата последней и если это button1 тогда...

Рисование линий в зависимости от того, какая клавиша нажата
доброго времени суток. совсем недавно начал изучать c#, поэтому строго не судите. никак не моуг...

Как узнать, какая клавиша нажата из события таймера?
Мне нужно узнать код клавиши нажатой в момент тика таймера. как это так можно узнать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.