PDA

View Full Version : حرکت فرم با کلیک کردن و نگه داشتن موس



abolfazl98
پنج شنبه 12 تیر 1393, 18:04 عصر
سلام .
من فرم ویندوز اپم رو None کردم یعنی کنترل باکس و از این چیزا نداره .
FormBorderStyle = None
ولی الان دیگه حرکت نمی کنه . وقتی اجرا می شه فقط یک جا ثابت می ماند . چطور کاری کنم با کلیک برو روی فرم و نگاه داشتن ان کلیک و حرکت موس نرم افزارم هم حرکت کنه ؟

aliagamon
پنج شنبه 12 تیر 1393, 19:08 عصر
Const HT_CAPTION As Integer = &H2
Const WM_NCLBUTTONDOWN As Integer = &HA1


<Runtime.InteropServices.DllImport("user32.dll")> _
Public Shared Function SendMessage(hWnd As IntPtr, Msg As Integer, wParam As Integer, lParam As Integer) As Integer
End Function
<Runtime.InteropServices.DllImport("user32.dll")> _
Public Shared Function ReleaseCapture() As Boolean
End Function




Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
If e.Button = MouseButtons.Left Then
ReleaseCapture()
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0)
End If
End Sub

Aryan.Software
پنج شنبه 12 تیر 1393, 19:13 عصر
یه PictureBox و یا شئی دیگری بسازید و این کد رو براش بنویسید

Public Class Form1

Private mPrevPos As New Point

Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

Dim delta As New Size(e.X - mPrevPos.X, e.Y - mPrevPos.Y)
If (e.Button = MouseButtons.Left) Then
Me.Location += delta
mPrevPos = e.Location - delta
Else
mPrevPos = e.Location
End If

End Sub

End Class

Aryan.Software
پنج شنبه 12 تیر 1393, 19:17 عصر
الان اگه موس رو روی PictureBox1 بکشید فرم جابه جا میشه. میتونید از شی دیگه ای هم استفاده کنید. فقط یادتون باشه که خط 7 تا 13 باید در رویداد MouseMove کنترل نوشته بشن

abbasmohr
شنبه 22 آذر 1399, 19:29 عصر
سلام عزیز
این کد رو تو Mouse_Down فرم مربوطه بنویسید قابل حرکت میشه:

If e.Button = MouseButtons.Left Then
Me.Capture = False
' Create and send a WM_NCLBUTTONDOWN message.
Const WM_NCLBUTTONDOWN As Integer = &HA1S
Const HTCAPTION As Integer = 2
Dim msg As Message = _
Message.Create(Me.Handle, WM_NCLBUTTONDOWN, _
New IntPtr(HTCAPTION), IntPtr.Zero)
Me.DefWndProc(msg)
End If


موفق باشی عزیز
اگه می خواستی با تصویر فرمت رو حرکت بدی بگو تا کد اونم بزارم.:لبخندساده:

saeidmobashery
جمعه 18 اسفند 1402, 09:42 صبح
مطلب ارزنده‌ای بود