Страница 1 из 2

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

Добавлено: 21 сен 2009, 22:01
BattleMage
я хочу узнать какая клавиша была нажата и если это tab, то ничего не выполнять
язык С#

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

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


ОФФТОП: куча вопросов по c# и студии, а так как никто из друзей не увлекается, то и спросить не у кого... приходится вас мучать...((

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

Добавлено: 21 сен 2009, 22:19
Newbie
//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);
}


ЗЫ рефлектор рулит))

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

Добавлено: 22 сен 2009, 18:27
BattleMage
а, вот как. спасибо)

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

Добавлено: 02 апр 2017, 18:04
Сионист
Newbie писал(а)://if (e.KeyCode != VK_TAB)
//if (WM_KEYDOWN != VK_TAB)

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

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

Добавлено: 02 апр 2017, 18:16
Romeo
Сионист, а ты точно увидел, что язык C#? Или как всегда, прочёл два слова, к которым придумал, как придраться, а оставшуюся часть не прочёл?

Добавлено: 02 апр 2017, 18:30
Сионист
Я увидел, что коды клавиш - не часть языка, а файл.
Romeo писал(а):Или как всегда, прочёл два слова, к которым придумал, как придраться, а оставшуюся часть не прочёл?
А ничего, что как раз так то я и не умею? В отличие от некоторых.

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

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

В общем, скажи честно. Как всегда не разобрался в чём тут дело, но человека сразу решил на место поставить на всякий случай. Типа садись - два.
Сионист писал(а):А ничего, что как раз так то я и не умею? В отличие от некоторых.
Этого мысленного пассажа вообще не осилил.

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

Добавлено: 03 апр 2017, 17:50
Сионист
Romeo писал(а):Откуда ты это увидел? Файл, в котором в С++ определено значение VK_TAB - это как раз часть компилятора.
Нет. Он поставляется с , а не входит в. Его отлично можно скопировать отдельно на другую машину и использовать, не запуская компилятор c++.

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

Добавлено: 04 апр 2017, 10:01
Romeo
Сионист писал(а):Нет. Он поставляется с , а не входит в.
Он является частью компилятора, перестань спорить. Открою тебе секрет: у каждого компилятора свой windows.h. Более того, эти хедеры совсем не идентичны, что вызывает проблемы несовместимости компиляторов на платформе Window. Поверь мне, такие проблемы существуют. Я год занимался портированием крупного проекта с VS 10 на MinGW, так что знаю, о чём говорю.
Сионист писал(а):Его отлично можно скопировать отдельно на другую машину и использовать, не запуская компилятор c++.
Скопировать и использовать в C# проекте? Ну попробуй, я посмотрю на то, что у тебя получится. Не смущают синтаксические отличия языков и тот факт, что понятия #include в C# вообще отсутствует? Там есть import, и он подключает не хедер, а библиотеку.

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

Добавлено: 05 июн 2017, 07:33
Сионист
Romeo писал(а):Он является частью компилятора
Тогда нафига его инкладить в проект? Он поставляется со средой, не более того.