Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/30: Рейтинг темы: голосов - 30, средняя оценка - 4.67
kerbyteflon
73 / 74 / 21
Регистрация: 10.04.2010
Сообщений: 262
1

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

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

Искал на форуме не нашел как можно реализовать такую штуку? Хочу отловить событие перемещения курсора при зажатой левой кнопке мыши.
К примеру, зажимаешь кнопку мыши, двигаешь курсор влево выполняет одно действие, вправо другое?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2010, 11:40
Ответы с готовыми решениями:

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

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

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

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

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

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

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
73 / 74 / 21
Регистрация: 10.04.2010
Сообщений: 262
01.10.2010, 12:33  [ТС] 3
Вот причесал код !работает
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
_Sergei_
60 / 59 / 10
Регистрация: 11.08.2010
Сообщений: 199
01.10.2010, 13:01 4
Вот так пробуй

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
kenny69
burning1ife
1411 / 1233 / 292
Регистрация: 21.09.2008
Сообщений: 3,407
Записей в блоге: 9
01.10.2010, 13:10 5
C#
1
2
3
4
 private void Form1_MouseLeave(object sender, EventArgs e)
        {
            isDown = false;
        }
0
kerbyteflon
73 / 74 / 21
Регистрация: 10.04.2010
Сообщений: 262
01.10.2010, 13:14  [ТС] 6
Спасибо работает если не трудно подскажите как будет вверх и вниз?
0
kenny69
burning1ife
1411 / 1233 / 292
Регистрация: 21.09.2008
Сообщений: 3,407
Записей в блоге: 9
01.10.2010, 13:22 7
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
SSV
Заблокирован
01.10.2010, 20:10 8
Если движение идет по диагонали - не мешало отслеживать в какую сторону больше.
Да и вообще, всё делается намного проще.
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(this.Form1_MouseMove); в конструкторе не прописывай
1
01.10.2010, 20:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2010, 20:10

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru