Вылавливание нажатой комбинации клавишь Ctrl + C
От: TRV  
Дата: 10.04.02 15:01
Оценка:
Приветствую.

Люди, помогите мне советом. Мне нужно выловить нажатую комбинацию клавиш Ctrl+C в методе
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (Focused)
{
if (<какое должно быть условие входа в тело if-а?>)
{
Console.WriteLine("Буду очень признателен за конкретный ответ! :)");
}
}
}
WBR, Руслан
Re: Вылавливание нажатой комбинации клавишь Ctrl + C
От: Newbie  
Дата: 10.04.02 15:24
Оценка:
Здравствуйте TRV, Вы писали:

TRV>Приветствую.


TRV>Люди, помогите мне советом. Мне нужно выловить нажатую комбинацию клавиш Ctrl+C в методе

TRV>protected override void OnKeyPress(KeyPressEventArgs e)
TRV>{

if (e.KeyChar < 26)
MessageBox.Show("Got you , <CNTR> + " + System.Convert.ToChar(e.KeyChar + 64));


TRV>}
MCP.NET
Re[2]: Вылавливание нажатой комбинации клавишь Ctrl + C
От: Newbie  
Дата: 10.04.02 15:27
Оценка:
Здравствуйте Newbie, Вы писали:

Сорри '<=', а не '<'

N>if (e.KeyChar <= 26)

N> MessageBox.Show("Got you , <CNTR> + " + System.Convert.ToChar(e.KeyChar + 64));
MCP.NET
Re[3]: Вылавливание нажатой комбинации клавишь Ctrl + C
От: Аноним  
Дата: 10.04.02 15:50
Оценка:
Здравствуйте Newbie, Вы писали:

N>Сорри :) '<=', а не '<'


N>>if (e.KeyChar <= 26)

N>> MessageBox.Show("Got you , <CNTR> + " + System.Convert.ToChar(e.KeyChar + 64));

Спасибо, хоть я уже нашел еще одно условие:
if (e.KeyChar == (char)3)
MessageBox.Show("Got you , <CNTR> + <C>");

Но, извините, может я не доганяю, почему все так сложно? :)
Вот например, что такое "26" или "64"? :) Ну или, что такое (char)3, не символ ли "любви" к Майкрософту? ;)

Короче говоря. Хоть я и ламер полнейший, но ИМХО, подход никудышный.
Можно было бы сделать энумератор кодов(или любого отличного от char объекта) основных клавиш, а потом комбинировать их с помощью оператора "+", например (e.KeyChar == (KeyButtons.Ctrl + KeyButtons.C)), а где-то глубоко внутри связывать все с платформой.

Простите, это от лучших чувств :)
Re[4]: Вылавливание нажатой комбинации клавишь Ctrl + C
От: Newbie  
Дата: 10.04.02 16:23
Оценка:
Здравствуйте Аноним, Вы писали:

А>Здравствуйте Newbie, Вы писали:


N>>Сорри '<=', а не '<'


N>>>if (e.KeyChar <= 26)

N>>> MessageBox.Show("Got you , <CNTR> + " + System.Convert.ToChar(e.KeyChar + 64));

А>Спасибо, хоть я уже нашел еще одно условие:

А>if (e.KeyChar == (char)3)
А> MessageBox.Show("Got you , <CNTR> + <C>");

Так это оно и есть Твой случай — частный к моему Спецкоды от 1 до 26 можно стандартно вводить используя комбинации CTRL+<Буква латинского алфавита>. CTRL+A даст код 1, CTRL+B — код 2, CTRL+C — код 3,.... CTRL + Z — код 26. Прибавив код 'A'-1 ( == 65 — 1 == 64) получаем char-код нажатой клавиши. С другой стороны, получив код 4, понимает, что "в оригинале" это было CTRL + D.
MCP.NET
Re: Вылавливание нажатой комбинации клавишь Ctrl + C
От: tkazakov Лес кывт.рф
Дата: 11.04.02 06:53
Оценка:
Здравствуйте TRV, Вы писали:

TRV>Приветствую.


TRV>Люди, помогите мне советом. Мне нужно выловить нажатую комбинацию клавиш Ctrl+C в методе

TRV>protected override void OnKeyPress(KeyPressEventArgs e)
TRV>{
TRV> if (Focused)
TRV> {
TRV> if (<какое должно быть условие входа в тело if-а?>)
TRV> {
TRV> Console.WriteLine("Буду очень признателен за конкретный ответ! ");
TRV> }
TRV> }
TRV>}

Если приложение консольное, то см. SetConsoleCtrlHandler
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[5]: Вылавливание нажатой комбинации клавишь Ctrl + C
От: TRV  
Дата: 11.04.02 07:38
Оценка:
Здравствуйте Newbie, Вы писали:

N>Так это оно и есть :) Твой случай — частный к моему :) Спецкоды от 1 до 26 можно стандартно вводить используя комбинации CTRL+<Буква латинского алфавита>. CTRL+A даст код 1, CTRL+B — код 2, CTRL+C — код 3,.... CTRL + Z — код 26. Прибавив код 'A'-1 ( == 65 — 1 == 64) получаем char-код нажатой клавиши. С другой стороны, получив код 4, понимает, что "в оригинале" это было CTRL + D.


Спасибо за подробный ответ.
Скажите, где можно подробно про это прочитать, а то мне тут много клавиш выловить нужно :)
WBR, Руслан
Re[6]: Вылавливание нажатой комбинации клавишь Ctrl + C
От: Newbie  
Дата: 11.04.02 17:18
Оценка:
Здравствуйте TRV, Вы писали:

TRV>Здравствуйте Newbie, Вы писали:


N>>Так это оно и есть Твой случай — частный к моему Спецкоды от 1 до 26 можно стандартно вводить используя комбинации CTRL+<Буква латинского алфавита>. CTRL+A даст код 1, CTRL+B — код 2, CTRL+C — код 3,.... CTRL + Z — код 26. Прибавив код 'A'-1 ( == 65 — 1 == 64) получаем char-код нажатой клавиши. С другой стороны, получив код 4, понимает, что "в оригинале" это было CTRL + D.


TRV>Спасибо за подробный ответ.

TRV>Скажите, где можно подробно про это прочитать, а то мне тут много клавиш выловить нужно

Про что — про это? CTRL+<буква> демонстрируется getch()'ем тоже- то ли Windows.Forms используют Run-Time C Libs, то ли это поведение соотвествующей Win32 функции.

Может, для вариантов с распознааванием CTRL, SHIFT, ALT лучше подходят OnKeyDown и OnKeyUp events — там приходит KeyEventArgs e, который "specifies the key the user pressed and whether any modifier keys (CTRL, ALT, and SHIFT) were pressed at the same time"?
MCP.NET
Re[7]: Вылавливание нажатой комбинации клавишь Ctrl + C
От: TRV  
Дата: 12.04.02 06:05
Оценка:
Здравствуйте Newbie, Вы писали:

TRV>>Скажите, где можно подробно про это прочитать, а то мне тут много клавиш выловить нужно :)


N>Про что — про это? CTRL+<буква> демонстрируется getch()'ем тоже- то ли Windows.Forms используют Run-Time C Libs, то ли это поведение соотвествующей Win32 функции.


Про коды комбинаций клавиш & коды клавиш в С#.
Интересует также способ узнавать коды (я так понимаю в C# используются ASCII коды?) нажатой комбинации клавиш.
Прошу прощения, но я не совсем понял ваши слова (цитата выше). Не могли бы вы подробнее, для чайника, объяснить, чем же демонстрируется код комбинации нажатых клавиш? Если есть, киньте пример, демонстрирующий это :)

Заранее благодарен.
WBR, Руслан
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.