Люди, помогите мне советом. Мне нужно выловить нажатую комбинацию клавиш Ctrl+C в методе
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (Focused)
{
if (<какое должно быть условие входа в тело if-а?>)
{
Console.WriteLine("Буду очень признателен за конкретный ответ! :)");
}
}
}
WBR, Руслан
Re: Вылавливание нажатой комбинации клавишь Ctrl + C
Здравствуйте 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
Сорри '<=', а не '<'
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, Вы писали:
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
Здравствуйте 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
Здравствуйте 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
Здравствуйте 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
Здравствуйте Newbie, Вы писали:
TRV>>Скажите, где можно подробно про это прочитать, а то мне тут много клавиш выловить нужно :)
N>Про что — про это? CTRL+<буква> демонстрируется getch()'ем тоже- то ли Windows.Forms используют Run-Time C Libs, то ли это поведение соотвествующей Win32 функции.
Про коды комбинаций клавиш & коды клавиш в С#.
Интересует также способ узнавать коды (я так понимаю в C# используются ASCII коды?) нажатой комбинации клавиш.
Прошу прощения, но я не совсем понял ваши слова (цитата выше). Не могли бы вы подробнее, для чайника, объяснить, чем же демонстрируется код комбинации нажатых клавиш? Если есть, киньте пример, демонстрирующий это :)