С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
 
pshenichny
0 / 0 / 0
Регистрация: 23.12.2014
Сообщений: 1
1

Как определить событие MouseDown для элементов массива PictureBox?

12.11.2015, 14:29. Просмотров 348. Ответов 0
Метки нет (Все метки)

как определить событие MouseDown для еще не созданных элементов массива array<System::Windows::Forms::PictureBox^>
пользуюсь вот этим:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        void pb_MouseDown(System::Object^  sender, MouseEventArgs^  e) 
        {           
            isDragging  = true;
            currentX = e->X;
            currentY = e->Y;            
        }
        void pb_MouseMove(Object^ sender, MouseEventArgs^ e) {
            if (isDragging) {
            arr_pb[counter]->Top = arr_pb[counter]->Top + (e->Y - currentY);
            arr_pb[counter]->Left = arr_pb[counter]->Left + (e->X - currentX);
            }
        }
        void pb_MouseUp(System::Object^ sender, MouseEventArgs^ e) {
            isDragging  = false;
        }
Но событие работает только для последнего элемента массива. Как сделать для всех элементов?

Добавлено через 18 часов 43 минуты
меня сейчас осенило, что проблема совсем в другом. Приведенный выше код определяет нажатие левой кнопки на любом объекте. А движение последнего объекта массива - просто моя ошибка цикла.
Проблема в другом: как сделать аналогичный механизм не для любого объекта Windows::Forms, а для конкретного.
Либо, как воркараунд, получить абсолютные координаты мыши в окне формы (в моём коде e->X,Y - координаты внутри объекта, например pictureBox)?
Есть идеи?

Добавлено через 3 часа 48 минут
решение нашлось при помощи Cursor->Position.X
Только нужно учесть, что Cursor->Position.X показывает абсолютные координаты экрана. Чтобы рассчитать координаты внутри Windows Form нужно делать корректировку Cursor->Position.X - this->Left
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2015, 14:29
Ответы с готовыми решениями:

Рисование в PictureBox с использованием MouseMove, MouseDown
Здраствуйте. У меня есть picturebox мне нужно: 1) при нажатии кнопки мыши рисуется квадрат 2)...

Событие клавиатуры и движение pictureBox
всем привет мне нужно чтоб например при нажатие w (ц) pictureBox поднимался выше но у меня ничего...

Как определить координаты клика в PictureBox?
Добрый день. Есть на форме Picturebox. После клика по этому пиктурбоксу каким образом определить...

Событие для элемента массива label
У меня небольшая проблемка. Я пишу программу Windows Forms. Использую Visual Studio. И проблема у...

Как определить нажатие левой кнопки мыши на PictureBox
Здраствуйте. Я хочу на MouseMoveEvent узнать статус нажатия левой кнопки мыши. Согласно этой...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2015, 14:29

Мини paint - Не обрабатывается событие mouseDown на pictureBox
Какая-то несуразица, почему может не обрабатываться событие mouseDown на pictureBox ? По...

Почему не срабатывает событие MouseDown для Grid?
Почему не срабатывает событие MouseDown для Grid? &lt;Grid MouseDown=&quot;Grid_MouseDown&quot;&gt; &lt;/Grid&gt; ...

WPF событие MouseDown
как при возникновении события MouseDown кнопки изменить background image


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

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

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