Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка сложных событий 
:(
    Опции темы
4eJIoBekMoJIekyJIa
Дата 13.11.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



как создать обработчик для нажатия к примеру ctrl+enter ?
--------------------
PM MAIL   Вверх
alexey___
Дата 13.11.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 12.3.2007
Где: Казахстан

Репутация: нет
Всего: 1



если я правильно понял, то вот куск кода, который выводит сообщение, если на форме были нажаты ctrl + enter

Код


private void Form1_KeyDown(object sender, KeyEventArgs e)
{
            switch(e.KeyData)
            {
                case Keys.Control ^ Keys.Return:
                case Keys.ControlKey ^ Keys.Return:
                    {
                        MessageBox.Show(e.KeyData.ToString());
                        break;
                    }
            }
}


Событие KeyDown на форме

Это сообщение отредактировал(а) alexey___ - 13.11.2007, 15:35
PM MAIL   Вверх
Wanderer2019
Дата 13.11.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 2
Всего: 17



А просто, для интереса, поясни пожалуйста, что вот это
Цитата(alexey___ @  13.11.2007,  15:33 Найти цитируемый пост)
                
case Keys.Control ^ Keys.Return:
case Keys.ControlKey ^ Keys.Return:


означает.. как это работает?

PM ICQ MSN   Вверх
4eJIoBekMoJIekyJIa
Дата 13.11.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 2.11.2007

Репутация: нет
Всего: нет



если не трудно обьясни плз  чем ControlKey отличается Control
--------------------
PM MAIL   Вверх
alexey___
Дата 14.11.2007, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 12.3.2007
Где: Казахстан

Репутация: нет
Всего: 1



Прошу прощения за свой пример!

просто всегда так делал и всё работало, smile
Чем отличается ControlKey от Control не знаю пока

посмотрел Петцольда - чтобы проверить сочетание клавиш, нужно писать следующий код:

Код

if (e.KeyData == (Keys.Control | Keys.Return))
            MessageBox.Show(e.KeyData.ToString());


но я всегда писал так
Код

if (e.KeyData == (Keys.Control ^ Keys.Return))
            MessageBox.Show(e.KeyData.ToString());


и работало - объяснить не смогу, почему работает

ControlKey в данном примере не работает

На счёт switch
если нужно чтобы на несколько условий выполнялось одно и тоже действие, то можно написать так:
Код

switch(e.KeyData)
            {
                case Keys.Escape:
                case Keys.Control ^ Keys.Return:
                    {
                        MessageBox.Show(e.KeyData.ToString());
                        break;
                    }
            }



PM MAIL   Вверх
tol05
Дата 14.11.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 11
Всего: 170



Цитата(Wanderer2019 @  13.11.2007,  16:35 Найти цитируемый пост)
как это работает?

Цитата(4eJIoBekMoJIekyJIa @  13.11.2007,  20:54 Найти цитируемый пост)
если не трудно обьясни плз  чем ControlKey отличается Control 

а почему бы самим не поэкспериментировать, не погуглить? smile Я тоже разницы не подмечал. Вот что получилось в результате экспериментов:

Код

private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
    ////это сама клавиша контрол
    //if(e.KeyCode == Keys.ControlKey)
    //{
    //    MessageBox.Show("Keys.ControlKey");
    //}

    ////показывает, есть ли модификатор у кнопки
    //if(e.Modifiers == Keys.Control)
    //{
    //    MessageBox.Show("Keys.Control");
    //}

    //например нам нужно ловить не нажатие на кнопку '4', а именно нажатие на '4' при нажатой Ctrl
    if(e.KeyCode == Keys.D4)
    {
        if(e.Modifiers == Keys.Control)
        {
            MessageBox.Show("It's a real happiness");
        }
    }
}




--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.