powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перемещение компонента по форме с помощью мыши
4 сообщений из 4, страница 1 из 1
Перемещение компонента по форме с помощью мыши
    #38292483
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача перемещать по форме графический компонент, например TextBox.
Реализовал это с помощью обработки события перемещение мыши:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
private void textBox1_MouseMove ( object sender, MouseEventArgs e ) {
            Control c = sender as Control;
            textBox1.Cursor = System.Windows.Forms.Cursors.SizeAll;
            if (isDown) {
                c.Location = c.Parent.PointToClient(Control.MousePosition);
            }
            
        }



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

Не как не могу сообразить как сделать что бы курсор не уходил в верхний левый угол компонента
...
Рейтинг: 0 / 0
Перемещение компонента по форме с помощью мыши
    #38292490
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982,

видимо не курсор уходит, а контрол своим углом становится на курсор. Тебе нужно при нажатии на контрол определить dx, dy относительно левого верхнего угла контрола, и смещать с учетом этого сдвига.
...
Рейтинг: 0 / 0
Перемещение компонента по форме с помощью мыши
    #38292502
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikola1982,

запоминать позицию мыши при начале перетаскивания, смещение относительно левого верхнего угла, и т.д.


другой вариант - не морочить голову с MouseMove, а обработать для контрола сообщение WM_NCHITTEST и назначить HTCAPTION чему-то там.
7405913
...
Рейтинг: 0 / 0
Перемещение компонента по форме с помощью мыши
    #38292519
mikola1982
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarismikola1982,

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

огромное тебе спасибо!!!

добавил:
Код: c#
1.
c.Location = new Point(curr.X-_cursor.X,curr.Y-_cursor.Y);



где _cursor координаты относительно самого перемещаемого элемента.

Еще раз большое спасибо

Тема закрыта.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перемещение компонента по форме с помощью мыши
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]