Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перемещение компонента по форме с помощью мыши / 4 сообщений из 4, страница 1 из 1
10.06.2013, 13:46
    #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
10.06.2013, 13:48
    #38292490
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перемещение компонента по форме с помощью мыши
mikola1982,

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

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


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

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

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

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



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

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

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


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