Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
Deserter
1 / 1 / 1
Регистрация: 30.11.2016
Сообщений: 61
1

Перемещение объекта при помощи мыши

09.12.2016, 21:52. Просмотров 1220. Ответов 7
Метки нет (Все метки)

Доброго времени суток. Как можно реализовать перемещение какого либо объекта (label, button и т.д) с помощью мыши, нажал на него и таскаешь по всей форме, но переместиться он может только в одну область, в ином случае он возвращается на свое первоначальное место. Чтобы было понятней: я хочу сделать программу для проверки знаний английского языка, а именно: в левой части будет текст с пропущенными словами, а в правой - сами слова, которые нужно переместить в пропуски. Повторюсь, меня интересует именно процесс перетаскивания, со всем остальным разберусь сам. Примера кода не имеется, т.к я только узнаю неизвестную мне информацию.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2016, 21:52
Ответы с готовыми решениями:

Рисование линии в PictureBox при помощи мыши
Как организовать такую программку: На форме есть picturebox, необходимо мышкой...

Изменить расположение контрола в flowlayoutpanel при помощи мыши
Доброе всем утро. Реализую не большой программный комплекс. В нем расположена...

Перемещение кнопки при наведении курсора мыши
Всем привет! Столкнулся с проблемой при решении задачи. Пожалуйста,...

Приложение, позволяющее рисовать (одним цветом) во окне формы при помощи мыши
Выполнить любые 3 (из 6) задания на C# (тема была разделена на части) 5....

Можно ли при помощи веб камеры измерить расстояние до объекта
Подскажите, пожалуйста! Можно ли при помощи веб камеры измерить расстояние до...

7
zna926
345 / 316 / 258
Регистрация: 24.09.2013
Сообщений: 1,959
Записей в блоге: 1
10.12.2016, 00:08 2
Тут label1 привязана к курсору
поправки -200 и -100 подобрал так, чтобы курсор был рядом.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Forms Code
{    public partial class Form1 : Form
    {
       public Form1()
        {
          InitializeComponent();
           this.MouseMove+=new MouseEventHandler(Form1_MouseMove);
         }
                
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
          int X = Cursor.Position.X;
           int Y = Cursor.Position.Y;
             label1.Left = X-200;
              label1.Top = Y-100;
        }  
    }
}
}
1
Deserter
1 / 1 / 1
Регистрация: 30.11.2016
Сообщений: 61
10.12.2016, 23:30  [ТС] 3
Интуитивно почти все понятно. Можете объяснить что делает:
C#
1
2
3
4
this.MouseMove+=new MouseEventHandler(Form1_MouseMove);
...
label1.Left = X-200;
label1.Top = Y-100;
Добавлено через 1 час 5 минут
Со 2 разобрался... А как сделать чтобы label1 следовал точно за мышью, а то он каждый раз по разному
0
ArtemKolesnikov
23 / 23 / 14
Регистрация: 14.07.2016
Сообщений: 89
10.12.2016, 23:40 4
C#
1
this.MouseMove+=new MouseEventHandler(Form1_MouseMove);
Подписываешься на событие перемещения курсора по форме
Цитата Сообщение от Deserter Посмотреть сообщение
А как сделать чтобы label1 следовал точно за мышью, а то он каждый раз по разному
C#
1
2
3
4
int X = Cursor.Position.X;
           int Y = Cursor.Position.Y;
             label1.Left = X;
              label1.Top = Y;
0
ArtemKolesnikov
23 / 23 / 14
Регистрация: 14.07.2016
Сообщений: 89
11.12.2016, 00:42 5
Лучший ответ Сообщение было отмечено Deserter как решение

Решение

Наверное то что тебе нужно.
Таскаешь лейбл при нажатой и удерживаемой левой кнопки мыши.
Предыдущий мой ответ НЕВЕРЕН (касаемо положений лейбла).
1
Вложения
Тип файла: zip WindowsFormsApplication7.zip (54.0 Кб, 16 просмотров)
zna926
345 / 316 / 258
Регистрация: 24.09.2013
Сообщений: 1,959
Записей в блоге: 1
11.12.2016, 01:10 6
this..... это стандартная запись в конструкторе, в данном случае отслеживается положение курсора
label6.Left и label6.Top - так задают обычно координаты левого и верхнего угла фигуры. По этим координатам устанавливается положение фигуры

Добавлено через 5 минут
ArtemKolesnikov.
Это то, что совершено не нужно. Ничего не нажимая, нужно просто перемещать мышь
0
Deserter
1 / 1 / 1
Регистрация: 30.11.2016
Сообщений: 61
11.12.2016, 02:56  [ТС] 7
Цитата Сообщение от ArtemKolesnikov Посмотреть сообщение
Наверное то что тебе нужно.
Таскаешь лейбл при нажатой и удерживаемой левой кнопки мыши.
Предыдущий мой ответ НЕВЕРЕН (касаемо положений лейбла).
Вложения
WindowsFormsApplication7.zip (54.0 Кб, 0 просмотров)
Да, именно это мне и нужно.. Со всем уже разобрался, кроме одного, как сделать перемещение именно по нажатию мыши(как у вас). Постараюсь разобрать ваш код. Спасибо

Добавлено через 10 минут
Не пойму, программа написана без этого:
C#
1
this.MouseMove+=new MouseEventHandler(Form1_MouseMove);
Или я что-то не понимаю?
0
ArtemKolesnikov
23 / 23 / 14
Регистрация: 14.07.2016
Сообщений: 89
11.12.2016, 13:44 8
Лучший ответ Сообщение было отмечено Deserter как решение

Решение

Цитата Сообщение от Deserter Посмотреть сообщение
Или я что-то не понимаю?
Оно есть, только в другом месте. Обработчики событий сгенерированы автоматически двойным кликом по соответствующему полю в Visual Studio. Подписки на события находятся в файле Form1.Designer.cs
C#
1
2
3
this.label1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.label1_MouseDown);
            this.label1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.label1_MouseMove);
            this.label1.MouseUp += new System.Windows.Forms.MouseEventHandler(this.label1_MouseUp);
По поводу события перемещения мыши по форме - оно не нужно. Мышь (указатель) в ПЕРВУЮ ОЧЕРЕДЬ перемещается по объекту, на который наведен курсор, и на форму не выходит. Поэтому нам нужны нажатие мыши НАД ОБЪЕКТОМ, отпускание мыши НАД ОБЪЕКТОМ и перемещение по "территории объекта".
1
11.12.2016, 13:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2016, 13:44

Перемещение scroll относительно мыши
У меня есть панель не ней объекты, на панели стоит croll, я подвожу мышь к краю...

Перемещение формы по указателю мыши
Может для этого есть уже подходящие функции При нажатии средней кнопки мышки...

Перемещение изображения манипулятором мыши
Создать графические объекты и организовать управление движением этих объектов...


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

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

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