Аватар для kerbyteflon
78 / 79 / 21
Регистрация: 10.04.2010
Сообщений: 262

Как отловить событие перемещения курсора при зажатой левой кнопке мыши

01.10.2010, 11:40. Показов 14394. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Искал на форуме не нашел как можно реализовать такую штуку? Хочу отловить событие перемещения курсора при зажатой левой кнопке мыши.
К примеру, зажимаешь кнопку мыши, двигаешь курсор влево выполняет одно действие, вправо другое?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.10.2010, 11:40
Ответы с готовыми решениями:

Cобытие MouseMove при нажатой левой кнопке мыши
Сделал у PictureBox событие MouseMove. Если просто провести мышкой над PictureBox все срабатывает, но если нажать левой(собственно правой...

Игра "Сапер": MouseEnter и MouseLeave не генерируются при зажатой кнопке мыши
Здравствуйте, пытаюсь написать "Сапер" где в роли квадратиков я использую picturebox. Проблема следующая: не могу сделать так чтобы при...

Как отловить клик мыши на динамически созданной кнопке
Всем привет! Динамически создаю кнопку. В ней есть событие, что при нажатии на неё правой кнопкой мышки появляется меню, где можно выбрать...

7
137 / 133 / 20
Регистрация: 03.02.2009
Сообщений: 608
01.10.2010, 12:01
на вскидку

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool isDown = false
 
private void Form_mousedown(...)
{
   if (e.buttons == mousebuttons.left)
     isDown = true;
}
private void Form_mouseup(...)
{
   if (e.buttons == mousebuttons.left)
     isDown = false;
}
 
private void Form_mousemove(...)
{
   if (isDown)   
  {
        //зажата левая мышь!!!!        
  }
}
0
 Аватар для kerbyteflon
78 / 79 / 21
Регистрация: 10.04.2010
Сообщений: 262
01.10.2010, 12:33  [ТС]
Вот причесал код !работает
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
bool isDown = false; 
            
 
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
          if (e.Button == MouseButtons.Left)
                 isDown = true;
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
                isDown = true;
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isDown)
            {
                MessageBox.Show("Left");
            }
           
               
        }
Работает и при движении влево и вправо и вниз и как сделать, так что бы нажатие кнопки сбрасывалось, получается я один раз нажал и потом при входе мыши на форму MouseMove все время срабатывает?
0
61 / 60 / 10
Регистрация: 11.08.2010
Сообщений: 199
01.10.2010, 13:01
Вот так пробуй

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
        private bool isDouwn;
        private Point prevLocation;
..................
private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if(e.Button == MouseButtons.Left)
            {
                isDouwn = true;
                prevLocation = e.Location;
            }
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                isDouwn = false;
            }
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if(isDouwn && e.Button == MouseButtons.Left)
            {
                if(e.X < prevLocation.X)
                {
                    textBox1.Text += "left" + Environment.NewLine;
                }
                if(e.X > prevLocation.X)
                {
                    textBox1.Text += "right" + Environment.NewLine;
                }
                prevLocation = e.Location;
            }
        }
0
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
01.10.2010, 13:10
C#
1
2
3
4
 private void Form1_MouseLeave(object sender, EventArgs e)
        {
            isDown = false;
        }
0
 Аватар для kerbyteflon
78 / 79 / 21
Регистрация: 10.04.2010
Сообщений: 262
01.10.2010, 13:14  [ТС]
Спасибо работает если не трудно подскажите как будет вверх и вниз?
0
burning1ife
 Аватар для kenny69
1466 / 1287 / 294
Регистрация: 21.09.2008
Сообщений: 3,438
Записей в блоге: 9
01.10.2010, 13:22
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (isDown && e.Button == MouseButtons.Left)
            {
                if (e.X < prevLocation.X)
                {
                    textBox1.Text = "left" + Environment.NewLine;
                }
                if (e.X > prevLocation.X)
                {
                    textBox1.Text = "right" + Environment.NewLine;
                }
                
 
                if (e.Y < prevLocation.Y)
                {
                    textBox1.Text = "up" + Environment.NewLine;
                }
                if (e.Y > prevLocation.Y)
                {
                    textBox1.Text = "down" + Environment.NewLine;
                }
 
 
                prevLocation = e.Location;
 
            }
 
        }
 
        bool isDown;
        private void Form1_MouseLeave(object sender, EventArgs e)
        {
            isDown = false;
        }
 
        private void Form1_Scroll(object sender, ScrollEventArgs e)
        {
           
        }
 
        private Point prevLocation;
 
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
 
            if (e.Button == MouseButtons.Left)
            {
                isDown = true;
                prevLocation = e.Location;
            }
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                isDown = false;
            }
        }
1
Заблокирован
01.10.2010, 20:10
Если движение идет по диагонали - не мешало отслеживать в какую сторону больше.
Да и вообще, всё делается намного проще.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
int x, y;
        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
                x = e.X;
                y = e.Y;
            }
            
        }
 
        private void Form1_MouseUp(object sender, MouseEventArgs e)
        {
            this.MouseMove -= new System.Windows.Forms.MouseEventHandler(this.Form1_MouseMove);
            this.Text = "Никуда";
        }
 
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            var move = e.Location;
            if (move.X - x > move.Y - y && move.X - x > y - move.Y)
                this.Text = "Вправо";
            else if (x - move.X > move.Y - y && x - move.X > y - move.Y)
                this.Text = "Влево";
            else if (move.Y - y > move.X - x && move.Y - y > x - move.X)
                this.Text = "Вниз";
            else this.Text = "Вверх";
            
        }
Добавлено через 28 минут
Забыл сказать это событие this.MouseMove += new System.Windows.Forms.MouseEventHandler(t his.Form1_MouseMove); в конструкторе не прописывай
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2010, 20:10
Помогаю со студенческими работами здесь

Как отследить вход в PictureBox курсора мыши с нажатой левой кнопкой
Проблема такая. Необходимо сделать так, чтобы PictureBox меняла картинку при входе курсора мыши с нажатой левой кнопкой (например, с sap0...

Отловить событие нажатия клавиши мыши при Drag&Drop
Сабж. В процессе перетаскивания отловить событие MouseDown. Начинаю перетягивание при зажатой левой клавише. При этом...

Как отловить событие прокрутки колесика мыши
Подскажите пожалуйста как отловить события прокрутки на форме или панели колеса вниз и вверх?

Событие мыши Mouse Down и получение координат при нажатой кнопке
день добрый, подскажите пожалуйста, как сделать так, что бы при нажатой кнопке мыши в области окна я мог отслеживать координаты....

Событие при при перемещении курсора мыши в уже выпавшем списке ComboBox
Всех с Наступившим Новым Годом! Счастья и удачи побольше в этом году! Не подскажите ли какое событие возникает при перемещении курсора...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
Kanban или Scrum - что выбрать?
EggHead 27.04.2025
Kanban и Scrum — уже много лет удерживают лидирующие позиции среди гибких подходов. Руководители проектов и команды разработчиков то и дело сталкиваются с дилеммой: какой из этих двух методов выбрать. . .
Кастомные Middleware на C# в ASP.NET Core
UnmanagedCoder 27.04.2025
Разработка веб-приложений сегодня мало напоминает монолитное программирование прошлых лет. На смену громоздким блокам кода пришла модульная архитектура, где каждый компонент выполняет строго. . .
Анализ и линтинг кода JavaScript: ESLint, Prettier и JSHint
run.dev 26.04.2025
JavaScript прошёл долгий путь от простого языка для анимации веб-страниц до основы современной веб-разработки. С ростом сложности приложений, увеличением кодовых баз и масштабированием команд. . .
Паттерны в Python: Singleton, Factory и Observer
py-thonny 26.04.2025
Паттерны проектирования — это проверенные временем решения типовых проблем разработки программного обеспечения. Их история берёт начало с книги "Приёмы объектно-ориентированного проектирования. . . .
Исключения в C#: Stack Overflow, Access Violation и Out of memory
stackOverflow 26.04.2025
Исключения в C# — это не только механизм оповещения о проблемах, а целое искусство управления потоком выполнения программы в экстремальных ситуациях. Обычное исключение, например,. . .
Логирование в C# ASP.NET Core с помощью Serilog, ElasticSearch, Kibana
stackOverflow 25.04.2025
Помните те времена, когда для анализа проблемы приходилось подключаться к серверу, искать нужный лог-файл среди десятков других и вручную фильтровать тысячи строк в поисках ошибки? К счастью, эти дни. . .
Структура "железный OnKeyUp" вместо антидребезга. Полностью асинхронный счётчик.
Hrethgir 25.04.2025
Программа для симуляции схемы - Logisim Evolution В общем какое-то время отвлёкся, так было надо, теперь когда запилю это на verilog и FPGA , досоставлю заявку в ФИПС на полезную модель - не готов. . .
Автоматизация Amazon Web Services (AWS) с Boto3 в Python
py-thonny 25.04.2025
Облачные вычисления стали неотъемлемой частью современной ИТ-инфраструктуры, а Amazon Web Services (AWS) занимает лидирующие позиции среди провайдеров облачных услуг. Управление многочисленными. . .
Apache Kafka vs RabbitMQ в микросервисной архитектуре
ArchitectMsa 25.04.2025
Современная разработка ПО всё чаще склоняется к микросервисной архитектуре — подходу, при котором приложение разбивается на множество небольших, автономных сервисов. В этой распределённой среде. . .
Параллельное программирование с OpenMP в C++
NullReferenced 24.04.2025
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru