C# Работа ПРАВОЙ кнопкой мыши

Узнай цену своей работы

Формулировка задачи:

Добрый день. Имеется рабочая программа на языке C#. Необходимо реализовать аналогичную программу, управление в которой осуществляется с помощью правой клавиши мыши. Программа элементарная, но я оказался бессилен. Исходник длинный, выложить его голым текстом не представляется возможным. Программа залита сюда: http://www.hivuz.ru/MySolution.rar Спасибо модераторам за понимание. Буду рад конструктивной помощи. При необходимости вознаграждение обеспечу, главное напишите. Спасибо за сознательность.

Решение задачи: «C# Работа ПРАВОЙ кнопкой мыши»

textual
Листинг программы
        protected override void OnMouseMove(MouseEventArgs mevent)
        {
            base.OnMouseMove(mevent);
 
            if ((mevent.Button & MouseButtons.Left) != MouseButtons.Left) {
                // Приостанавливаем или возобнавляем запущенный таймер логическим выражением
                timer.Enabled = this.Capture  // Связь с мышью установлена
                    // && (MouseButtons & MouseButtons.Left) != MouseButtons.Left   // Распознавать левую кнопку необязательно
                    && this.ClientRectangle.Contains(mevent.Location);   // Курсор над кнопкой 
                // && this.ClientRectangle.Contains(this.PointToClient(MousePosition))// То же самое!
            }
        }
 
        // Переопределение унаследованного метода диспетчеризации 
        // события MouseDown нажатия кнопки мыши для запуска таймера
        protected override void OnMouseDown(MouseEventArgs mevent)
        {
            if (mevent.Button == MouseButtons.Left)
                return;
 
            if (mevent.Button == MouseButtons.Right)
                mevent = new MouseEventArgs(MouseButtons.Left, mevent.Clicks, mevent.X, mevent.Y, mevent.Delta);
            base.OnMouseDown(mevent);   // Отправляем к базовому методу
 
            // Если нажата левая кнопка мыши (побитовое умножение)
            if (mevent.Button == MouseButtons.Left)
            {
                timer.Interval = DELAY;     // Задержка для момента нажатия
                timer.Start();              // Запустить таймер
            }
        }
 
        // Переопределение унаследованного метода диспетчеризации 
        // события MouseUp отпускания кнопки мыши для остановки таймера
        protected override void OnMouseUp(MouseEventArgs mevent) {
 
            if (mevent.Button == MouseButtons.Right)
                mevent = new MouseEventArgs(MouseButtons.Left, mevent.Clicks, mevent.X, mevent.Y, mevent.Delta);
            base.OnMouseUp(mevent);     // Отправляем к базовому методу
 
            timer.Stop();   // Стоп таймер
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.308 из 5
Похожие ответы