Перетаскивание формы за любой объект - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Видел где-то такой пример:
Листинг программы
  1. Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
  2. Me.Capture = False
  3. Me.WndProc(Message.Create(Me.Handle, &HA1, New IntPtr(2), IntPtr.Zero))
  4. End Sub
Работает хорошо, но только на форме. Если схватиться, допустим, за Label , то ничего не происходит. Может кто подсказать, как можно сделать так, что бы и за другие объекты тоже тянуло?

Решение задачи: «Перетаскивание формы за любой объект»

textual
Листинг программы
  1. Public Class Form1
  2.     Private Const WM_NCLBUTTONDOWN As Integer = &HA1
  3.     Private Const HTCAPTION As Integer = 2
  4.  
  5.     Private Declare Function ReleaseCapture Lib "user32" () As Long
  6.     Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwdn As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Integer
  7.  
  8.  
  9.     Private Sub DragForm(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
  10.         If e.Button = MouseButtons.Left Then
  11.             Me.Opacity = 0.35
  12.             ReleaseCapture()
  13.             SendMessage(Me.Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
  14.             Me.Opacity = 1
  15.         End If
  16.     End Sub
  17. End Class

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы