PDA

View Full Version : جابجایی ابزار ToolStrip هنگام اجرا



JaVa
دوشنبه 22 اسفند 1390, 09:53 صبح
سلام خدمت همه ی برنامه نویس ها...

من یه روز تموم وقت گذاشتم که این نوار Toolstrip رو در زمان اجرا جابجاش کنم آخر هم موفق نشدم از دوستان اگه در این زمینه اطلاعاتی دارند کمک کنن!

پیشاپیش از همتون مچکرم....:قلب:

barnamenevisforme
دوشنبه 22 اسفند 1390, 10:13 صبح
سلام
فقط باید اول خاصیت dock رو به none تغییر بدی.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ToolStrip1.Dock = DockStyle.None
Dim p As Point
p.X = 50
p.Y = 50
ToolStrip1.Location = p
End Sub

JaVa
دوشنبه 22 اسفند 1390, 10:25 صبح
دوست عزیز سلام....

این سورسی که شما قرار دادی فقط وقتی روی ابزار Toolstrip کلیک کنی مختصات Toolstrip جابجا می شه اصلا قابلیت اینو نداره که Drag & Drop بکنی؟
و توی رویداد های دیگه امتحانشون کردم ولی فاید ه ای نداشت!

barnamenevisforme
دوشنبه 22 اسفند 1390, 10:44 صبح
سلام
منم توی رویداد های drag and drop امتحان کردم جواب نداد.ولی اگهع راه دیگه ای نبود،یه متغییر مثل زیر توی ابتدای فرمت تعریف کن و بعد:
Dim toolstrip_capture As Boolean = False
Private Sub ToolStrip1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ToolStrip1.MouseDown
toolstrip_capture = True
End Sub
Private Sub ToolStrip1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ToolStrip1.MouseUp
ToolStrip1.Dock = DockStyle.None
Dim p As Point
p.X = e.X
p.Y = e.Y
ToolStrip1.Location = p
toolstrip_capture = False
End Sub

فرید نجفلو
دوشنبه 22 اسفند 1390, 11:59 صبح
دوست عزیز می تونید از کد زیر استفاده کنید:

Private TsInMove As Boolean
Private LocDiff As New Point
Private Sub ToolStrip1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ToolStrip1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
TsInMove = True
LocDiff = New Point(Cursor.Position.X - ToolStrip1.Left, Cursor.Position.Y - ToolStrip1.Top)
End If
End Sub
Private Sub ToolStrip1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ToolStrip1.MouseUp
TsInMove = False
End Sub
Private Sub ToolStrip1_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles ToolStrip1.MouseMove
If Not MouseButtons = Windows.Forms.MouseButtons.Left Then TsInMove = False
If TsInMove Then
Dim NewLoc As Point = Cursor.Position
NewLoc -= LocDiff
ToolStrip1.Location = NewLoc
End If
End Sub

Hybrid
دوشنبه 22 اسفند 1390, 12:08 عصر
سلام دوستان ، این یک راه دیگش :


Dim dragging As Boolean
Dim StartX As Integer
Dim StartY As Integer

Private Sub StartDragging(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

dragging = True
StartX = e.X
StartY = e.Y

End Sub

Private Sub WhileDragging(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If dragging = True Then
sender.location = New Point(sender.location.x + e.X - StartX, sender.location.y + e.Y - StartY)
Me.Refresh()
End If
End Sub

Private Sub EndDragging(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
dragging = False
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler ToolStrip1.MouseDown, AddressOf StartDragging
AddHandler ToolStrip1.MouseMove, AddressOf WhileDragging
AddHandler ToolStrip1.MouseUp, AddressOf EndDragging
End Sub