PDA

View Full Version : سوال: جا به جا کردن یه Button با کلیک روی آن و کشیدن آن روی فرم (vb.net)



maminb
جمعه 09 اسفند 1387, 13:59 عصر
چطور میتونم با کلیک رو یه باتن اون رو در فرم جابه جا کنم. آقایون مدیر دقت کنند که اینو پاک نکنن. چون اون سوال من تو Delphi بود و این در VB.NET.



ممنون.

sari-1369
جمعه 09 اسفند 1387, 16:39 عصر
بفرما




Public Class Form1

Dim x, y As Integer
Private Sub Button1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
x = e.X
y = e.Y
End Sub

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

If e.Button = Windows.Forms.MouseButtons.Left Then
Button1.Location = New Point(e.X + Button1.Location.X - x, e.Y + Button1.Location.Y - y)
End If

End Sub

End Class

anooshiran
جمعه 09 اسفند 1387, 16:41 عصر
سلام دوست عزيز

اين كد ها رو برنامت اضافه كن. تمام كنترل هاي روي فرم قابل جابجايي ميشوند.

اگر توضيحات بيشتري لازم داشتي مطرح كن




Dim ControlMove As Boolean
Dim ControlLocation As Point
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddMouseHandlersToAllControlsInForm()
End Sub
Private Sub AddMouseHandlersToAllControlsInForm()
For Each C As Control In Me.Controls
AddHandler C.MouseDown, AddressOf Controls_MouseDown
AddHandler C.MouseMove, AddressOf Controls_MouseMove
AddHandler C.MouseUp, AddressOf Controls_MouseUp
Next
End Sub
Private Sub Controls_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
ControlLocation = e.Location
ControlMove = True
End If
End Sub
Private Sub Controls_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If ControlMove And TypeOf sender Is Control Then
Dim cp As Point = Me.PointToClient(System.Windows.Forms.Cursor.Posit ion)
Dim C As Control = sender
C.Location = New Point(cp.X - ControlLocation.X, cp.Y - ControlLocation.Y)
End If
End Sub
Private Sub Controls_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
ControlMove = False
End Sub

sari-1369
جمعه 09 اسفند 1387, 16:53 عصر
anooshiran (http://barnamenevis.org/forum/member.php?u=54421) خوبین ؟؟؟

ممنون از راهنمایی هاتون .

شما کلا space تو کارت نیست ؟؟؟ :D اگه میشه کد بالا رو اصلاح کن .

sari-1369
جمعه 09 اسفند 1387, 16:55 عصر
راسی ، این خط دستو کجاهاش space داره ؟؟



AddMouseHandlersToAllControlsInForm()

Hossein Bazyan
جمعه 09 اسفند 1387, 20:15 عصر
راسی ، این خط دستو کجاهاش space داره ؟؟




AddMouseHandlersToAllControlsInForm()


سلام
دوست عزیز این اسم تابعه و هیچ فاصله ای بینشون نیست !

anooshiran
شنبه 10 اسفند 1387, 02:13 صبح
راسی ، این خط دستو کجاهاش space داره ؟؟




AddMouseHandlersToAllControlsInForm()



سلام دوست عزيز

همانطور كه دوست خوبمان Hossein Bazyan فرموده اند اين نام تابع است و امكان Space گذاري در آن نيست. البته خدمتتات عرض كنم كه من كلا عادت به نامگذاري با مفهوم براي توابع و متغير ها و كلاسها دارم از اين رو گاهي اين اسامي طولاني ميگردد. مثلا اگر نام همين تابع را بخواهيد ترجمه كنيد ميشود " اضافه كردن اداره كننده هاي ماوس به تمام كنترلها در فرم ".