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(); // Стоп таймер
}