powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Событие нажатия клавиш в c#
11 сообщений из 11, страница 1 из 1
Событие нажатия клавиш в c#
    #39288135
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте,
Подскажите пожалуйста каким образом в c# перехватить событие нажатие комбинации клавиш "CTRL+S". Есть стандартное событие windows forms "KeyPress", но оно не совсем мне подходит, так как оно ловит все нажатия клавиш, а мне надо чтобы событие возникало при нажатии клавиш "Ctrl+s".
Заранее спасибо.
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288152
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325Здравствуйте,
Подскажите пожалуйста каким образом в c# перехватить событие нажатие комбинации клавиш "CTRL+S". Есть стандартное событие windows forms "KeyPress", но оно не совсем мне подходит, так как оно ловит все нажатия клавиш, а мне надо чтобы событие возникало при нажатии клавиш "Ctrl+s".
Заранее спасибо.

а отфильтровать внутри?
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288155
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинSerega325Здравствуйте,
Подскажите пожалуйста каким образом в c# перехватить событие нажатие комбинации клавиш "CTRL+S". Есть стандартное событие windows forms "KeyPress", но оно не совсем мне подходит, так как оно ловит все нажатия клавиш, а мне надо чтобы событие возникало при нажатии клавиш "Ctrl+s".
Заранее спасибо.

а отфильтровать внутри?
Я пробовал фильтровать внутри KeyPress, но в таком случаи перехватываются все нажатия клавиш,а мне надо чтобы событие возникало только при нажатии "Ctrl+s", при нажатии других клавиш событие не должно возникать.
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288170
yura-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325,
А если как-то так:
Код: c#
1.
2.
 if (e.KeyChar == 19)
                MessageBox.Show("CTRL+S");
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288192
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yura-007Serega325,
А если как-то так:
Код: c#
1.
2.
 if (e.KeyChar == 19)
                MessageBox.Show("CTRL+S");


Вот код, который реализован на данный момент. У меня есть контрол текстовый редактор, я хочу чтобы при нажатии "Ctrl+s" текст с контрола сохранялся в базу, но при таком коде, который Вы предлагаете (обработка события Control.KeyPress) событие вызывается при нажатии любых клавиш (в, м, п, в, а, р, п, alt+f4 и т.д.), а я хочу чтобы событие возникало только при нажатии "ctrl+s", т.е. сразу без фильтрации или хотя бы при нажатии "ctrl".
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288193
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Serega325]yura-007Serega325,


Вот код, который реализован на данный момент.

char c = e.KeyChar;
int i = (int)c;
if ((i < 26) & (i != 3 & i != 22 & i != 9 & i != 13 & i != 1 & i != 4))
{
e.Handled = true;
if (i == 19)
MessageBox.Show("Сохранить в базу","", MessageBoxButtons.YesNo);
}

.
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288347
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325yura-007Serega325,
А если как-то так:
Код: c#
1.
2.
 if (e.KeyChar == 19)
                MessageBox.Show("CTRL+S");


Вот код, который реализован на данный момент. У меня есть контрол текстовый редактор, я хочу чтобы при нажатии "Ctrl+s" текст с контрола сохранялся в базу, но при таком коде, который Вы предлагаете (обработка события Control.KeyPress) событие вызывается при нажатии любых клавиш (в, м, п, в, а, р, п, alt+f4 и т.д.), а я хочу чтобы событие возникало только при нажатии "ctrl+s", т.е. сразу без фильтрации или хотя бы при нажатии "ctrl".
такого не бывает, да и нет в этом ни какой нужды. Есть события с устройств ввода, не важно какую клавишу вы нажимаете, это событие обрабатывается, если вас интересует только конкретная кнопка, то для этого есть оператор IF.
Ни какого события на кнопку клавиатуры повесить нельзя, так было задумано еще при царе горохе, когда Windows даже и не пахло и так будет всегда, потому, что это правильно. А у вас какие то непонятные хотелки, почему вас так волнует, что будет вызываться обработчик события при любом нажатии на кнопку? проясните общественности, в чем соль вашей хотелки?
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288363
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesНи какого события на кнопку клавиатуры повесить нельзя, так было задумано еще при царе горохе,

это не совсем так - акселераторы в windows - комбинации кнопок привязываются к пунктам меню (с Alt не путать)

ShortcutKeys в винформах называется
меню в форме можно сделать невидимым
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288432
VAlexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Serega325,

Используйте не событие KeyPress, а событие KeyDown (либо KeyUp)
Внутри обработчика что-то типа такого:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
if (e.KeyData == (Keys.Control | Keys.S))
{
    e.SuppressKeyPress = true;
    e.Handled = true;

    // делаем что-то

}
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288471
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serega325Подскажите пожалуйста каким образом в c# перехватить событие нажатие комбинации клавиш "CTRL+S". Есть стандартное событие windows forms "KeyPress", но оно не совсем мне подходит, так как оно ловит все нажатия клавиш, а мне надо чтобы событие возникало при нажатии клавиш "Ctrl+s".
Заранее спасибо.
Создать в форме меню(можно указать Visible = false),
добавить пункт "Save", задать свойство ShortcutKeys = CTRL+S,
обработчик клика в пункт меню решает задачу.

и ни строчки говнокода, можно тем же путём добавить другие обработчики и всё в визуальном редакторе студии.
...
Рейтинг: 0 / 0
Событие нажатия клавиш в c#
    #39288532
Serega325
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesSerega325пропущено...

Вот код, который реализован на данный момент. У меня есть контрол текстовый редактор, я хочу чтобы при нажатии "Ctrl+s" текст с контрола сохранялся в базу, но при таком коде, который Вы предлагаете (обработка события Control.KeyPress) событие вызывается при нажатии любых клавиш (в, м, п, в, а, р, п, alt+f4 и т.д.), а я хочу чтобы событие возникало только при нажатии "ctrl+s", т.е. сразу без фильтрации или хотя бы при нажатии "ctrl".
такого не бывает, да и нет в этом ни какой нужды. Есть события с устройств ввода, не важно какую клавишу вы нажимаете, это событие обрабатывается, если вас интересует только конкретная кнопка, то для этого есть оператор IF.
Ни какого события на кнопку клавиатуры повесить нельзя, так было задумано еще при царе горохе, когда Windows даже и не пахло и так будет всегда, потому, что это правильно. А у вас какие то непонятные хотелки, почему вас так волнует, что будет вызываться обработчик события при любом нажатии на кнопку? проясните общественности, в чем соль вашей хотелки?
Дела вот в чем: у меня есть редактор для интерпритатора с подсветкой синтаксиса, поскольку при вводе символа вызывается кучу всяких событий, то при очень быстром наборе текста он начинает подтормаживать, поэтому я хочу уменьшить количество вызываемых событий. Например вызывать событие только при нажатии системной клавиши (alt, ctrl,shift), а не фильтровать каждую клавишу.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Событие нажатия клавиш в c#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]