Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/137: Рейтинг темы: голосов - 137, средняя оценка - 4.77
 Аватар для Xiros
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46

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

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

Студворк — интернет-сервис помощи студентам
Как сделать, чтобы:
Если нажата клавиша, допустим Enter, то загрузится Paint
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.11.2011, 17:58
Ответы с готовыми решениями:

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

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

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

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

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

Добавлено через 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
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
05.11.2011, 19:02
Поставьте в свойствах формы KeyPreview = true;
0
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
05.11.2011, 19:05
Цитата Сообщение от 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
Может ты в событиях Form1_KeyDown не добавил.
0
34 / 34 / 3
Регистрация: 12.10.2011
Сообщений: 175
05.11.2011, 19:14
попробуй с обработчиками KeyPreview или KeyPress
0
 Аватар для Xiros
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
05.11.2011, 19:15  [ТС]
Vitail - Пишет ошибку
Оператор == не может применятся к операндам System.Windows.Forms.Keys и char
0
774 / 554 / 80
Регистрация: 03.07.2011
Сообщений: 1,020
05.11.2011, 19:20
Цитата Сообщение от 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
заработало это:

C#
1
2
private void Form1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{ if (e.KeyData == Keys.Enter) Process.Start("calc"); }
но не сразу проблема была в том, что на форме уже были контролы и один из них был выбран по дефолту...когда сделал их всех энаблэд = фолс, все стало гут)
убедись, что ни один из элементов на форме у тебя не выбран, а если и так, но примени обработчик для них всех)
0
Level 2
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
05.11.2011, 19:26
Ну так создайте не для формы, а для textBox'а событие KeyDown.
0
 Аватар для Xiros
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
07.11.2011, 15:43  [ТС]
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
 Аватар для FakiR
401 / 275 / 48
Регистрация: 22.11.2010
Сообщений: 785
Записей в блоге: 1
07.11.2011, 15:50
Xiros, убедитесь что у формы стоит свойство KeyPreview = true;
0
 Аватар для Xiros
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
07.11.2011, 16:02  [ТС]
Вот сейчас попробовал...
У формы стоит 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
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
07.11.2011, 17:01
Вам все правильно ответили. Вот, посмотрите
Вложения
Тип файла: rar Enter.rar (37.2 Кб, 72 просмотров)
0
168 / 140 / 23
Регистрация: 02.01.2011
Сообщений: 913
07.11.2011, 17:05
Т.е. когда фокус на TextBox и нажимаете Enter ,получаете сообщение. Главное здесь - где фокус
0
 Аватар для Xiros
2 / 2 / 0
Регистрация: 05.11.2011
Сообщений: 46
07.11.2011, 18:00  [ТС]
Эх.
Всё таки я тупой
Наверно надо мне было сразу начинать с моего вопроса
(Просто хотел разобратся, но не понял)

А вопрос таков:
Нужно чтобы если я нажал 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
07.11.2011, 20:45

Не по теме:

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

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

Не по теме:

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.11.2011, 12:15
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru