Member 13320940 Ответов: 1

Как изменить расположение текстового поля в положение указателя


Мне нужно знать, есть ли способ переместить(изменить местоположение) текстовое поле, когда я нажимаю где-то на форме во время выполнения...я попробовал это на ListView, но текстовое поле появляется в другом месте....
Спасибо!

Что я уже пробовал:

Private Sub Lv_ChkIN_MouseClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Lv_ChkIN.MouseClick
    txt_Drag.Location = txt_Drag.PointToScreen(New Point(e.X, e.Y))
    txt_Drag.BringToFront()
End Sub

1 Ответов

Рейтинг:
12

OriginalGriff

PointToScreen возвращает координаты экрана на основе: на основе верхнего левого угла вашего монитора, а не содержащей формы, которая содержит текстовое поле. Если вы установите текстовое поле в экранные координаты, то оно будет смещено в вашей форме на величину, на которую форма TLHC смещена от экрана TLHC. e.X и e.Y уже находятся относительно формы и не нуждаются в переводе, чтобы быть "правильным местом" для вашего текстового поля:

txt_Drag.Location = New Point(e.X, e.Y)


Цитата:
Это первый код, который я попробовал...когда я использовал этот код ,верхний левый угол listview определялся как верхний левый угол формы..

А! Вы хотите его относительно ListView! Все, что вам нужно сделать, это смещение его TLHC мероприятия отправителя:
Dim c As Control = TryCast(sender, Control)
txt_Drag.Location = New Point(c.Location.X + e.X, c.Location.Y + e.Y)


Member 13320940

Это первый код, который я попробовал...когда я использовал этот код ,верхний левый угол listview определялся как верхний левый угол формы..

OriginalGriff

Ответ обновлен.

Member 13320940

Спасибо! Я дам тебе знать!

OriginalGriff

Всегда пожалуйста!

Member 13320940

Он отлично работает! Спасибо!

OriginalGriff

Никаких проблем!