Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Количество нажатий клавиши при нажатом Ctrl


Автор: Partizan 3.7.2007, 08:22
Как отследить сколько раз была нажата клавиша при нажатой клавише Ctrl?

То есть если нажат Ctrl и допустим Tab делать инкремент счётчика, а при Отпускании Ctrl получать количество нажатий...

как лучше сделать?

не хочется заводить глобальную переменную для класса...

Автор: tol05 3.7.2007, 09:21
лучше завести переменную класса, хотя бы потому, что считать нажатия ты будешь в OnKeyDown, а выводить информацию - в OnKeyUp...
но, если очень хочется (без поля класса), то можно  smile 
Код

public partial class Form1 :Form
    {
        public Form1()
        {
            InitializeComponent();

            bool pressed = false;     
            int counter = 0;
            KeyDown += delegate(object sender, KeyEventArgs e)
                                 {
                                     if(e.KeyValue == 17)
                                     {
                                         pressed = true;
                                     }
                                     if(e.KeyValue == 9 && pressed)
                                     {
                                         counter++;
                                     }
                                 };
            KeyUp += delegate(object sender, KeyEventArgs e)
                     {
                        if(e.KeyValue == 17 && pressed)
                        {
                             pressed = false;
                             Alert(counter);
                             counter = 0;
                        }
                     };
        }

        void Alert(int count)
        {
            Text = count.ToString();
        }
    }

Посмотри в ClassExplorer-е. Ну ни одной переменной класса нет  smile 

Автор: Naum 4.7.2007, 14:15
tol05, это "синтаксический сахар". По-моему эта конструкция в MSIL представляется посложнее, чем конструкция с использованием переменной класса. Сейчас проверить не могу, работаем на 2003 студии. Домой прийду обязательно посмотрю. ;)

Автор: tol05 4.7.2007, 18:45
Naum понимаешь, есть разные уровни абстракции: в жизни вообще, в программировании, в разговоре... Ты называешь мой код 
Цитата(Naum @  4.7.2007,  14:15 Найти цитируемый пост)
 "синтаксический сахар"

да я и не спорю. Event-ы тоже называют синтаксическим сахаром, ну и что? обидно кому-то что-ли??? smile Генерики, анонимные методы, foreach, switch, try...catch (даже сами Exception - по большому секрету скажу) - все это синтаксический сахар. На ассемблере люди педалят до сих пор, вот там никакого сахара, один геморрой. Только мне не охота чего-то к ним во френды клеиться. Я сахар уважаю, потому что тот сахар, который я себе сам пишу в своих библиотеках, не всегда вкуснее этого сахара (воспринимай эти слова как такой себе вариант каламбура) smile

Partizan, просил показать, как можно сделать без использования переменных класса. Я сделал (или ты хочешь мне показать эти переменные)? Надо исходить из определенного (между договаривающимися сторонами) уровня абстракции. Если я правильно понял Partizan-а, то ему нужно, чтобы в ClassExplorer-е не показывались ненужные никому переменные, чтобы девелоперы, занимающиеся partial class-ом не бегали и не спрашивали, что это за члены класса, нафига они нужны. Чтобы те, кто создавать наследников класса не писали письма с тем же вопросом... Все это я обеспечил.

Ну а то, что эти переменные реально есть и что компилятор их введет - это понятно. Чуда не будет, как всегда smile
Только это не ... волнует никого, никто о них не споткнется, никому они глаза не намозолят... 

Короче, "Кто может, пусть сделает лучше"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)