какая нажата клавиша

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

BattleMage
Сообщения: 25
Зарегистрирован: 28 апр 2009, 15:15

21 сен 2009, 22:01

я хочу узнать какая клавиша была нажата и если это tab, то ничего не выполнять
язык С#

Код: Выделить всё

private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            //if (e.KeyCode != 0x09)
            //if (e.KeyCode != VK_TAB)
            //if (WM_KEYDOWN != VK_TAB)
         }
чё-нить из этого правильно?


ОФФТОП: куча вопросов по c# и студии, а так как никто из друзей не увлекается, то и спросить не у кого... приходится вас мучать...((
Newbie
Сообщения: 142
Зарегистрирован: 06 сен 2009, 19:45

21 сен 2009, 22:19

//if (e.KeyCode != VK_TAB)
//if (WM_KEYDOWN != VK_TAB)

этот кусок не правильный. Если ты конешно в ручную не назначил коды клавиш.

VK_TAB (09)


юзай Keys.Tab (keys перечисление всех клавиш помогает не юзать конструкции типа e.KeyCode != 0x09)

+ WM_KEYDOWN != VK_TAB - абсолютно не верно! т.к. ты юзаешь функцию контрола, которая уже потом транслирует событие в виндовое сообщение

protected override void OnKeyDown(KeyEventArgs kevent)
{
if (kevent.KeyData == Keys.Space)
{
if (!this.GetFlag(2))
{
this.SetFlag(2, true);
if (!this.OwnerDraw)
{
base.SendMessage(0xf3, 1, 0);
}
base.Invalidate(this.DownChangeRectangle);
}
kevent.Handled = true;
}
base.OnKeyDown(kevent);
}


ЗЫ рефлектор рулит))
BattleMage
Сообщения: 25
Зарегистрирован: 28 апр 2009, 15:15

22 сен 2009, 18:27

а, вот как. спасибо)
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

02 апр 2017, 18:04

Newbie писал(а)://if (e.KeyCode != VK_TAB)
//if (WM_KEYDOWN != VK_TAB)

этот кусок не правильный. Если ты конешно в ручную не назначил коды клавиш.
Садись, два. Они давно назначены.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

02 апр 2017, 18:16

Сионист, а ты точно увидел, что язык C#? Или как всегда, прочёл два слова, к которым придумал, как придраться, а оставшуюся часть не прочёл?
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

02 апр 2017, 18:30

Я увидел, что коды клавиш - не часть языка, а файл.
Romeo писал(а):Или как всегда, прочёл два слова, к которым придумал, как придраться, а оставшуюся часть не прочёл?
А ничего, что как раз так то я и не умею? В отличие от некоторых.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

02 апр 2017, 18:48

Сионист писал(а):Я увидел, что коды клавиш - не часть языка, а файл.
Откуда ты это увидел? Файл, в котором в С++ определено значение VK_TAB - это как раз часть компилятора.

В общем, скажи честно. Как всегда не разобрался в чём тут дело, но человека сразу решил на место поставить на всякий случай. Типа садись - два.
Сионист писал(а):А ничего, что как раз так то я и не умею? В отличие от некоторых.
Этого мысленного пассажа вообще не осилил.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

03 апр 2017, 17:50

Romeo писал(а):Откуда ты это увидел? Файл, в котором в С++ определено значение VK_TAB - это как раз часть компилятора.
Нет. Он поставляется с , а не входит в. Его отлично можно скопировать отдельно на другую машину и использовать, не запуская компилятор c++.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

04 апр 2017, 10:01

Сионист писал(а):Нет. Он поставляется с , а не входит в.
Он является частью компилятора, перестань спорить. Открою тебе секрет: у каждого компилятора свой windows.h. Более того, эти хедеры совсем не идентичны, что вызывает проблемы несовместимости компиляторов на платформе Window. Поверь мне, такие проблемы существуют. Я год занимался портированием крупного проекта с VS 10 на MinGW, так что знаю, о чём говорю.
Сионист писал(а):Его отлично можно скопировать отдельно на другую машину и использовать, не запуская компилятор c++.
Скопировать и использовать в C# проекте? Ну попробуй, я посмотрю на то, что у тебя получится. Не смущают синтаксические отличия языков и тот факт, что понятия #include в C# вообще отсутствует? Там есть import, и он подключает не хедер, а библиотеку.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Аватара пользователя
Сионист
Сообщения: 1077
Зарегистрирован: 31 мар 2014, 06:18

05 июн 2017, 07:33

Romeo писал(а):Он является частью компилятора
Тогда нафига его инкладить в проект? Он поставляется со средой, не более того.
Писать можно на чём угодно, но зачем же так себя ограничивать? Пиши на c.
Ответить