Мой Kbyte.Ru
Рассылка Kbyte.Ru
Группы на Kbyte.Ru
Партнеры Kbyte.Ru
Реклама
Сделано руками
Сделано руками
> Исходные коды - Интернет -

Visual Basic .NET - Окна и формы

Все примеры / Интерфейс / Окна и формы

Перетаскивание формы за любое место

Автор: Интернет | добавлено: 22.02.2011, 17:48 | просмотров: 5582 (1+) | комментариев: 2 | рейтинг: *x8
Пример формы на Visual Basic .NET, которую можно перемещать по экрану за любое место.

Код

Dim newPoint As New System.Drawing.Point()
Dim a As Integer
Dim b As Integer

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    a = Me.MousePosition.X - Me.Location.X
    b = Me.MousePosition.Y - Me.Location.Y
End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
    If e.Button = MouseButtons.Left Then
    newPoint = Me.MousePosition
    newPoint.X = newPoint.X - (a)
    newPoint.Y = newPoint.Y - (b)
    Me.Location = newPoint
    End If
End Sub
Об авторе

Интернет

Анонимный пользователь сети Интернет. Автор великого множества кодов и программных решений. Никого никогда не видел в лицо этого пользователя, ходят слухи, что он многоликий, и может одновременно находиться в разных частях света.
Интернет
Последние комментарии (всего: 2)

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учетная запись на Kbyte.Ru, пройдите процедуру авторизации OpenID.
Если Вы еще не зарегистрированы на Kbyte.Ru - зарегистрируйтесь.

Вот так будет работать

Public Class Form1
Private ptClient As Point

Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEven tArgs) Handles Me.MouseDown
Dim cx, cy As Integer
'Вычисляем размер рамки окна,с учетом высоты заголовка
'если FormBorderStyle <> Windows.Forms.FormBorderStyle. None
'Можно воспользоваться так же SystemInformation.FrameBorderS ize
cx = (Me.Width - ClientRectangle.Width) \ 2
cy = (Me.Height - ClientRectangle.Height - cx)
ptClient = New Point(e.X + cx, e.Y + cy)
End Sub

Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEven tArgs) Handles Me.MouseMove
If e.Button = MouseButtons.Left Then
Dim ptTemp As Point = Me.PointToScreen(New Point(e.X, e.Y))
Dim ptLocation As Point
'Находим смещение до верхней левой точки окна
ptLocation.X = ptTemp.X - ptClient.X
ptLocation.Y = ptTemp.Y - ptClient.Y
Me.Location = ptLocation
End If
End Sub
End Class
Андрей, все и так работает. Твой код делает тоже самое, но относительно координат клика по самой форме.

В примере, у мня Visual Studio 2010, почему-то подчеркивает Me.MousePosition зеленым цветом... Ага, это из-за того, что свойство MousePosition имеет модификатор доступа Shared. Для бэйсика не критично. Можно убрать Me, либо заменить Me.MousePosition на Cursor.Position.
Авторизация
 
OpenID
Зарегистрируйся и получи 10% скидку на добавление своего сайта в каталоги! Подробнее »
Поиск по сайту
Люди на Kbyte.Ru
Реклама
Счетчики