92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172

Cобытие MouseMove при нажатой левой кнопке мыши

11.03.2010, 20:21. Показов 13140. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сделал у PictureBox событие MouseMove. Если просто провести мышкой над PictureBox все срабатывает, но если нажать левой(собственно правой так же) кнопкой мыши на форме и не отпуская ее провести над PictureBox'ом, то событие MouseMove не происходит (так же как и события MouseEnter). Как можно избавиться от этого?

Добавлено через 21 час 8 минут
Неужели никто не знает как решить данную проблему? =(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.03.2010, 20:21
Ответы с готовыми решениями:

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

MouseMove при нажатой правой кнопке мыши и рамки в PictureBox
Как избежать изменения действия события pictureBox1_MouseMove при смене рамки изображения внутри процедуры pictureBox1_MouseDown или в...

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

11
 Аватар для wwowa
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031
11.03.2010, 20:57
Непонятно от чего избавится, а главное, что получить надо. Но вот ссылка на две "рисовалки" - там и
MouseMove и клик...
https://www.cyberforum.ru/wind... 59359.html
0
92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172
11.03.2010, 21:23  [ТС]
Получить надо, что бы какое либо событие обрабатывалось когда мышка проходит над PictureBox с зажатой левой кнопкой мыши. Сейчас посмотрю твои примеры.

Добавлено через 4 минуты
В твоем примере с динамической линией та же проблема, что и у меня. Если нажать лв.кнопку мыши не на PictureBox, а на форме и не отпуская кнопку мыши навести на PictureBox, то линия не ресуется (событие MouseMove не обрабатывается) А надо что бы обрабатывалось =(
0
 Аватар для wwowa
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031
11.03.2010, 22:01
Сейчас попытал фотошоп. Если в режиме кисти щелкнуть вне рисунка(на панели в пустом месте), а потом не отжимая на рисунке - не рисует.. Отпускаешь - снова кликаешь- рисует... Не у одного тебя такая проблема(шутка). А если серьезно, меняй алгоритм. Я вот не понимаю, зачем щелкая на форме, пытаться нарисовать не отпуская кнопку на PictureBox ???? Если очень надо, почитай азы всей этой событийности..
А лучше "обойди гору"....
0
CEO
Эксперт С++
 Аватар для Alligieri
2258 / 1248 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
11.03.2010, 22:05
В принципе можно построить так - если была опущена кнопка мыши на форме то устанавливать некий флаг и перехватывать WM_MOUSEMOVE и читать координаты - если координаты мыши внутри pictureBox то рисовать.
1
92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172
11.03.2010, 22:19  [ТС]
Цитата Сообщение от Alligieri Посмотреть сообщение
В принципе можно построить так - если была опущена кнопка мыши на форме то устанавливать некий флаг и перехватывать WM_MOUSEMOVE и читать координаты - если координаты мыши внутри pictureBox то рисовать.
К сожелению pictureBox'у необходимо менять свои координаты =\
К сожелению события MouseOver, MouseLeave так же не обрабатываются =( В принципе мне достаточно было бы события MouseOver, но оно так же не работает

Добавлено через 5 минут
В идеале необходимо получить 2 свободно таскаемых по форме PictureBox'а. Когда нажимаем на 1 PictureBox курсор меняет свой вид, ведем мышку до 2го pictureBox'а, при наведении на 2й PictureBox он изменяет свой цвет, и при отпускании кнопки мышки два pictureBox'а соединяет линия.
(Таскание pictureBox и изменение вида курсора уже реализовано, необходимо реализовать смену чвета 2го pictureBox'a, при описанных выше действиях)
0
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
12.03.2010, 05:24
Кажется Alligieri говорил примерно о следующем:
C#
1
2
3
4
5
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (pictureBox1.ClientRectangle.Contains(e.Location) && e.Button == MouseButtons.Left)
                pictureBox1.BackColor = Color.Red;
        }
1
92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172
12.03.2010, 08:42  [ТС]
Цитата Сообщение от _Art_ Посмотреть сообщение
Кажется Alligieri говорил примерно о следующем:
C#
1
2
3
4
5
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            if (pictureBox1.ClientRectangle.Contains(e.Location) && e.Button == MouseButtons.Left)
                pictureBox1.BackColor = Color.Red;
        }
К сожалению само событие MouseMove не происходит, если навести на PictureBox c зажатой кнопкой мыши

Добавлено через 12 минут
Пишу так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
namespace prt
{
    public partial class Form1 : Form
    {
        PictureBox r;
        public Form1()
        {
            InitializeComponent();
            r = new PictureBox();
            r.BackColor = Color.Black;
            r.Width = 100;
            r.Height = 100;
            r.MouseMove += new MouseEventHandler(pictureBox1_MouseMove);
            r.Parent = this;
        }
 
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            MessageBox.Show("MouseMove");
        }
    }
}
Если просто навести на черный квадрат, то будет сообщение MouseMove. Если же нажать кнопку мыши вне квадрата на форме и неотпуская ее навести на квадрат, то сообщения не будет. А надо что бы было.
0
 Аватар для mitsky
31 / 31 / 6
Регистрация: 31.12.2009
Сообщений: 82
12.03.2010, 09:47
а если сделать несколько иначе? наводите мышку на 1й PictureBox и нажимаете. у вас запоминается клик по этому контролу. потом с уже отпушеный кнопкой мыши наводите на 2й PictureBox и нажимаете снова. проверяете, есть ли контрол на который уже была нажата кнопка мыши. если да, то соединяете их. или так не пойдет?
1
 Аватар для wwowa
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031
12.03.2010, 10:14
вот еще примерчик. Тоже как-то интересовался этими uml диаграммами. Но там проблемы растут - раньше чем успеваешь их решать. А вообще находил библиотеку для этих кубиков. И бесплатную. Но забыл где...
Вложения
Тип файла: zip Graphic_src.zip (448.7 Кб, 65 просмотров)
1
118 / 119 / 20
Регистрация: 21.01.2010
Сообщений: 252
12.03.2010, 11:27
Вы тот код что я дал, хоть пробовали? Там MouseMove генерится самой формой(название обработчик гляньте).
0
92 / 79 / 9
Регистрация: 10.03.2010
Сообщений: 172
12.03.2010, 12:29  [ТС]
Цитата Сообщение от mitsky Посмотреть сообщение
а если сделать несколько иначе? наводите мышку на 1й PictureBox и нажимаете. у вас запоминается клик по этому контролу. потом с уже отпушеный кнопкой мыши наводите на 2й PictureBox и нажимаете снова. проверяете, есть ли контрол на который уже была нажата кнопка мыши. если да, то соединяете их. или так не пойдет?
так не красиво =(

Добавлено через 2 минуты
Цитата Сообщение от _Art_ Посмотреть сообщение
Вы тот код что я дал, хоть пробовали? Там MouseMove генерится самой формой(название обработчик гляньте).
Да, извиняюсь, назначил событие PictureBox'у. Попробую подогнать. Конечно обращение каждый раз в MouseMove к pictureBox не радует, тк количество picturebox может меняться, придется все их в массиве хранить и проверять в цикле. Но лучшего варианта по моему не найти =(. Спасибо

Добавлено через 4 минуты
Цитата Сообщение от wwowa Посмотреть сообщение
вот еще примерчик. Тоже как-то интересовался этими uml диаграммами. Но там проблемы растут - раньше чем успеваешь их решать. А вообще находил библиотеку для этих кубиков. И бесплатную. Но забыл где...
Немного не то, но спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.03.2010, 12:29
Помогаю со студенческими работами здесь

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

Как отловить событие перемещения курсора при зажатой левой кнопке мыши
Искал на форуме не нашел как можно реализовать такую штуку? Хочу отловить событие перемещения курсора при зажатой левой кнопке мыши. К...

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

Прокрутка страницы при нажатой левой кнопке мыши
Есть такой код document.onmousedown = function(e) { e = e || window.event; down = 1; x = e.clientX; // начальное положение...

Как поменять указатель мыши при нажатой левой кнопке?
Мне надо, чтобы при нажатии левой кнопки мыши менялся значек указателя. Как это реализовать?


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

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

Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru