Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.74/168: Рейтинг темы: голосов - 168, средняя оценка - 4.74
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82

Перетаскивание мышью компонента pictureBox

08.03.2012, 18:40. Показов 32126. Ответов 68
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
собственно говоря сам вопрос указан в теме: как сделать так чтобы можно было перетаскивать мышью pictureBox1 на c#

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


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

помогите плизз !!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.03.2012, 18:40
Ответы с готовыми решениями:

Перетаскивание мышью компонента внутри pictureBox
Есть: pictureBox, на нем нарисованый прямоугольник. Нужно: при нажатии на него поменять цвет рамки, и...

Перетаскивание мышью объекта Picturebox
собственно есть код: //Создаем random для появления объектов Picturebox в случайных местах формы Random r = new...

Перетаскивание контролов мышью
Нужно по нажатию мыши на элементе перетаскивать контрол(элемент) за курсором.

68
3 / 1 / 0
Регистрация: 08.03.2012
Сообщений: 11
08.03.2012, 21:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от cat000000 Посмотреть сообщение
конечно не в тему, но можно как нибудь сделать чтоб при нажатии на этот пикчербокс создавался новый и таскался именно он, и желательно занести его название в масив какой нибудь
можно:

C#
1
2
3
List<pictureBox> list1 = new List<pictureBox>();//что то типа контейнера для экземпляров класса pictureBox
list1.Add(new pictureBox());//это можно повесить на щелчок мышки по вашей картинке или кномпе
move.LearnToMove(list1.Last());// это научит двигаться ваш свежеиспеченный  pictureBox
прочитайте про то как добавлять c# class к проекту.
1
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
08.03.2012, 22:00  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
Можно, в обработчике клика по пикчеру создавайте новый и подписывайте его на перетаскивание

это мне понятно, но какая фунция создаёт новый пикчер бокс ?
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
08.03.2012, 22:35
Создаем так:
C#
1
2
PictureBox pictureBox2 = new PictureBox();
//Дальше все его настройки
Тоесть нам при клике нужно содавать и настраивать, приписывая обработчики

P.S. Завтра я попробую написать вам проект, но завтра! Сегодня я спать! Уж очень трудный день, это 8 марта, всех девушек с праздником, всех пацанов тоже - день кончается)))
0
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
08.03.2012, 22:43  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
Создаем так:
C#
1
2
PictureBox pictureBox2 = new PictureBox();
//Дальше все его настройки
Тоесть нам при клике нужно содавать и настраивать, приписывая обработчики

P.S. Завтра я попробую написать вам проект, но завтра! Сегодня я спать!
я сделал так :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void pictureBoxClick_MouseUp(object sender, MouseEventArgs e) //Метод-обработчик отпускания мыши
        {
            status = false; //Выключаем "перемещение"
        }
 
        private void pictureBoxClick_MouseDown(object sender, MouseEventArgs e) //Метод-обработчик задержки мыши
        {
            status = true; //Включаем "перемещение"
        }
 
        private void pictureBoxClick_MouseMove(object sender, MouseEventArgs e) //Метод-обработчик перемещения мыши
        {
            if (status == true) //Если "перемещение включено"
            {
                pictureBox1.Location = new Point((Cursor.Position.X - this.Location.X - 30), (Cursor.Position.Y - this.Location.Y - 60)); //Задаем координаты pictureBox1 равные координатам курсора, с поправкой на расположение формы
                //Заголовок формы мы не учитываем! Будет не точно!
            }
        }


а в pictureBox1.Location = new Point((Cursor.Position.X - this.Location.X - 30), (Cursor.Position.Y - this.Location.Y - 60))

при вставке pictureBoxclick.Location выдаёт ошибку: Ошибка 1 Элемент "pictureBoxClick" не существует в текущем контексте. D:\,МИША\ang\Form1.cs 29 17 Перетаскивание_картинки


как вставить туда имя обекта на который был совершон клик
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
08.03.2012, 22:47
Хм... есть идея!
Все новые пикчеры подписывать на одни и те - же события!
Вот это зря:
C#
1
pictureBox1.Location = new Point((Cursor.Position.X - this.Location.X - 30), (Cursor.Position.Y - this.Location.Y - 60)); //Почему отнимаешь 30 и 60?
Имя объекта на который нажали так вроде задать можно:
C#
1
e.Location
P.S. Или можно добавлять не PictureBox, а заранее приготовленный UserControl, тогда не нужно с размерами возиться, добавил и все!
0
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
08.03.2012, 23:03  [ТС]
выходит ошибка: Ошибка 1 Невозможно присвоить значение свойству или индексатору "System.Windows.Forms.MouseEventArgs.Loc ation" -- доступ только для чтения D:\,МИША\ang\Form1.cs 29 17 Перетаскивание_картинки
0
09.03.2012, 00:46
 Комментарий модератора 
cat000000, старайтесь не пользоваться кнопкой "Цитата". Пишите сообщение в "Быстром ответе"
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.03.2012, 10:49
Вот возьми нормальный вариант перетаскивания (просто копируешь код и всё у тебя работает):
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
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
 
namespace WinForms_MovePictBoxes
{
    public partial class Form1 : Form
    {
        const int DefaultWidth = 45;
        const int DefaultHeight = 45;
        readonly Color DefaultColor = Color.Gray;
 
        List<Control> _controls = new List<Control>();
        Control _movableControl = null;
        Point _clickPoint;
 
        public Form1()
        {
            InitializeComponent();
 
            StartPosition = FormStartPosition.CenterScreen;
            AddNewPictureBox(70, 70);
        }
 
        private PictureBox AddNewPictureBox(int x, int y)
        {
            PictureBox pictBox = new PictureBox();
            pictBox.BackColor = DefaultColor;
            pictBox.Width = DefaultWidth;
            pictBox.Height = DefaultHeight;
            pictBox.Location = new Point(x, y);
 
            pictBox.MouseDown += delegate(object sender, MouseEventArgs e)
            {
                _movableControl = (Control)sender;
                _clickPoint = e.Location;
            };
            pictBox.MouseUp += delegate(object sender, MouseEventArgs e)
            {
                _movableControl = null;
            };
            pictBox.MouseMove += delegate(object sender, MouseEventArgs e)
            {
                if (_movableControl != null)
                {
                    Point point = new Point(e.Location.X + _movableControl.Location.X - _clickPoint.X, e.Location.Y + _movableControl.Location.Y - _clickPoint.Y);
                    _movableControl.Location = point;
                    Text = string.Format("X = {0}, Y = {1}", point.X, point.Y); //чисто для теста, можно удалять
                }
 
            };
            _controls.Add(pictBox); //сомнения что это нужно, но ты сам просил
            Controls.Add(pictBox);
            return pictBox;
        }
    }
}
2
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
09.03.2012, 12:18  [ТС]
может скинуть файлом весь проект, , а то при копировании
опять много ошибок
Ошибка 1 "object" не содержит определение для "Dispose" c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 20 18 WindowsFormsApplication4
Ошибка 3 "WindowsFormsApplication4.Form1" не содержит определения для "AutoScaleDimensions" и не был найден метод расширения "AutoScaleDimensions", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 35 18 WindowsFormsApplication4
Ошибка 4 "WindowsFormsApplication4.Form1" не содержит определения для "AutoScaleMode" и не был найден метод расширения "AutoScaleMode", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 36 18 WindowsFormsApplication4
Ошибка 5 "WindowsFormsApplication4.Form1" не содержит определения для "ClientSize" и не был найден метод расширения "ClientSize", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 37 18 WindowsFormsApplication4
Ошибка 9 "WindowsFormsApplication4.Form1" не содержит определения для "Form1_Load" и не был найден метод расширения "Form1_Load", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 40 55 WindowsFormsApplication4
Ошибка 8 "WindowsFormsApplication4.Form1" не содержит определения для "Load" и не был найден метод расширения "Load", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 40 18 WindowsFormsApplication4
Ошибка 6 "WindowsFormsApplication4.Form1" не содержит определения для "Name" и не был найден метод расширения "Name", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 38 18 WindowsFormsApplication4
Ошибка 10 "WindowsFormsApplication4.Form1" не содержит определения для "ResumeLayout" и не был найден метод расширения "ResumeLayout", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 41 18 WindowsFormsApplication4
Ошибка 2 "WindowsFormsApplication4.Form1" не содержит определения для "SuspendLayout" и не был найден метод расширения "SuspendLayout", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 31 18 WindowsFormsApplication4
Ошибка 7 "WindowsFormsApplication4.Form1" не содержит определения для "Text" и не был найден метод расширения "Text", принимающий тип "WindowsFormsApplication4.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.Designer.c s 39 18 WindowsFormsApplication4
Ошибка 11 Элемент "InitializeComponent" не существует в текущем контексте. c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication4\W indowsFormsApplication4\Form1.cs 19 13 WindowsFormsApplication4
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.03.2012, 12:20
Сначала расскажи, как ты этот код пытаешься использовать? Порядок действий, куда что вставляешь (чем подробнее опишешь, тем выше вероятность решения проблемы).

Добавлено через 1 минуту
А-а-а, ну ты копируй класс Form1 в новый проект. А пространство имён не копируй.

И вообще, если чему-то научиться хочешь, учись решать такие проблемы, а не брать готовое.
1
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
09.03.2012, 12:24  [ТС]
Цитата Сообщение от Casper-SC Посмотреть сообщение
А-а-а, ну ты копируй класс Form1 в новый проект. А пространство имён не копируй.

тоже ошибка:

Ошибка 1 "WindowsFormsApplication5.Form1" не содержит определения для "Form1_Load" и не был найден метод расширения "Form1_Load", принимающий тип "WindowsFormsApplication5.Form1" в качестве первого аргумента (возможно, пропущена директива using или ссылка на сборку) c:\users\7777\documents\visual studio 2010\Projects\WindowsFormsApplication5\W indowsFormsApplication5\Form1.Designer.c s 40 55 WindowsFormsApplication5
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.03.2012, 12:25
Скинь этот проект сюда (В новый же проект код вставлялся). Я просто не пойму, откуда у тебя проблемы на ровном месте. Там вообще нету никаких Form_Load по умолчанию.
0
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
09.03.2012, 12:30  [ТС]
вот...
Вложения
Тип файла: rar progect.rar (3.3 Кб, 21 просмотров)
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
09.03.2012, 12:30

Не по теме:

Цитата Сообщение от Casper-SC Посмотреть сообщение
Скинь этот проект сюда (В новый же проект код вставлялся). Я просто не пойму, откуда у тебя проблемы на ровном месте. Там вообще нету никаких Form_Load по умолчанию.
У нас тут такая проблема уже была, почитайте 1-3 страницы, где-то там уже попадали на Form1_Load)))))



Дважды кликнете по ошибке и удалите строку на которую вам укажут, 99% это ошибка в файле конструктора, обработчик удалили, а ссылка осталась.

P.S. Кто учил вас так кидать проект?!
0
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
09.03.2012, 12:39  [ТС]
Цитата Сообщение от DimanRu Посмотреть сообщение
Дважды кликнете по ошибке и удалите строку на которую вам укажут, 99% это ошибка в файле конструктора, обработчик удалили, а ссылка осталась.
как можно удалить InitializeComponent(); ?

а про то кто меня учил, меня ни кто не чему не учил, в 9 классе кроме условий на паскале не чего не изучают....
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.03.2012, 12:41
Цитата Сообщение от cat000000 Посмотреть сообщение
вот...
Во-первых это не проект. Во-вторых судя по Form1.cs пространство имён как было из моего кода так там и осталось. Что толку дальше решать проблему, если я уже говорил что надо делать, а действий небыло для решения ещё той старой проблемы.

Добавлено через 1 минуту
Цитата Сообщение от cat000000 Посмотреть сообщение
как можно удалить InitializeComponent(); ?
Тоесть ты решил решать проблему через одно место?

Что у вас у всех за привычка не слушать то, что вам говорят.
Я говорю:
1) Скинь проект с проблемой.
2) Расскажи порядок действий (если скинешь проект, то пока не надо это).

Всё, если не сделаешь, пусть помогают другие.
0
 Аватар для DimanRu
721 / 712 / 168
Регистрация: 15.06.2011
Сообщений: 1,704
09.03.2012, 12:42
Цитата Сообщение от cat000000 Посмотреть сообщение
как можно удалить InitializeComponent(); ?
Удалите не то что подчеркнуто! А то на что указывает после двойного клика > должен открыться Form1.Designer.cs и там строка - подписка на событие загрузки формы - её удалите!
C#
1
 this.Load += new System.EventHandler(this.Form1_Load); //Вот эта строка
0
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
09.03.2012, 12:45  [ТС]
сё кинул весь проект
Вложения
Тип файла: rar WindowsFormsApplication7.rar (24.5 Кб, 14 просмотров)
0
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.03.2012, 12:49
Цитата Сообщение от DimanRu Посмотреть сообщение
Удалите не то что подчеркнуто! А то на что указывает после двойного клика > должен открыться Form1.Designer.cs и там строка - подписка на событие загрузки формы - её удалите!
Это да, так проблема решается. Но не ясно откуда там вообще Form1_Load берётся. Чувствую было так:
Создался проект. Видим окно, дабл клик по нему, переходим в код. Заменяем класс Form1 тем самым затирая обработчик Form1_Load. Вообще есть несколько других способов для перехода.
1
1 / 1 / 2
Регистрация: 19.01.2012
Сообщений: 82
09.03.2012, 12:49  [ТС]
сё разобрался, скомпелировался, а как заставить двигатся все создаваемые пикчербоксы ?

не только тот чорный квадратик..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.03.2012, 12:49

Перетаскивание мышью видео в Adobe Premiere
Ребят нужна помощь, как сделать перетаскивание мышью видео файла в Adobe Premiere? Имеется путь до файла в текст боксе, хотелось бы чтобы...

Реализовать перетаскивание мышью элементов из одного списка в другой и обратно
На форме два списка (Listbox). Реализовать перетаскивание мышью элементов из одного списка в другой и обратно.

Перетаскивание формы за pictureBox
Всем привет! В общем вопрос в названии темы... Как осуществить перетаскивание формы за pictureBox? Есть ли решение? В C# новичок... да и...

Рисование на PictureBox - растягивание, перетаскивание фигур
Здравствуйте, такая проблема: пишу что-то вроде графического редактора, в числе прочих нужно реализовать рисование графических примитивов...

Как рисовать мышью на picturebox
Помогите составить код, как рисовать мышью на picturebox.


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru