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

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

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

Author24 — интернет-сервис помощи студентам
как определить событие 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.11.2015, 14:29
Ответы с готовыми решениями:

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

Мини 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

0
12.11.2015, 14:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2015, 14:29
Помогаю со студенческими работами здесь

Компонент Image, событие MouseDown
Здравствуйте. На форме расположен компонент Image. Рисуется координатная плоскость и добавлено...

Создание событий для массива элементов PictureBox
Добрый вечер. Подскажите как в С# можно прописать событие клика на элемент PictureBox. private...

Создать событие Click для динамически создаваемого PictureBox
Хай всем! Не могу создать событие Click для динамически создаваемого PictureBox(для массива...

Можно ли заменить событие MouseMove компонента PictureBox для экономии памяти
если оставить курсор на PictureBox срабатывает событие MouseMove и память приложения начинает...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru