الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اسحب وأفلت العناصر داخل النموذج

بدأه الكتكوووته في 4 ديسمبر 2008 · 6 رد · 578 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لدي مشروع واحتاج احتاج فيه ان اسحب عنصر الـ

Button و PictureBox

وإفلاته في

Panel

فما هي الطريقة الصحيحه لذلك

ارجوا المساعدة وشكرا

#2

أختي الكتكوتة ...

السلام عليكــم ورحمـة الله وبركاتــه

إستخدمى هذه الأحداث :

 Dim MouseChecked As Boolean = False

	Private Sub Button1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
		MouseChecked = True
	End Sub

	Private Sub Button1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
		MouseChecked = False
	End Sub


	Private Sub Button1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseMove
		If MouseChecked Then
			Button1.Location = Cursor.Position
		End If
	End Sub

سبحان الله وبحمده سبحان الله العظيم

لا تنسونا من صالح دعائكم ...

وفقكم الله وسدد خطاكم ...

#3

fouad اخي الفاضل

جزاك الله خير ...............

لكن الكود مو صحيح.....يعني ما اشتغل مثل ما اريد.....

انا اريد عندما اضغط ضغط مستمر على البوتن....يتحرك مع حركة الماوس إلى أن يتم افلاته في مكان محدد

هل استطيع عمل ذلك

ارجوا المساعده

#4

بســم الله الـرحمــن الرحيــم

السلام عليكــم ورحمـة الله وبركاتــه

أتوقع أن المشكلة لديك بالموقع المتحرك للزر ...

إستبدليه بهذا الكود ...

واتمنى أن يكون هو طلبك ....

   Dim MouseChecked As Boolean = False

	Private Sub Button1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseDown
		MouseChecked = True
	End Sub

	Private Sub Button1_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
		MouseChecked = False
	End Sub


	Private Sub Button1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseMove
		If MouseChecked Then
			Dim x As Integer = Windows.Forms.Cursor.Position.X - Me.Location.X - 5
			Dim y As Integer = Windows.Forms.Cursor.Position.Y - Me.Location.Y - 30
			Dim p As New System.Drawing.Point(x, y)
			Button1.Location = p
		End If
	End Sub

اللهم إنا نسألك علما نافعا .. دعائكم لأهل فلسطين ...

سبحان الله وبحمده سبحان الله العظيم

لا تنسونا من صالح دعائكم ...

وفقكم الله وسدد خطاكم ...

#5

اختي الفاضلة

الفكرة بشكل علم تعتمد علي خاصية AllowDrop إما مع فورم او مع كونترول

ثم من داخل الحدث DragDrop والحدث DragEnter وأيضا الحدث DragLeave نقوم بإضافة الكود المناسب لكل حدث

عموما الامثلة التالية توضح الفكرة بشكل عام ويمكنك استخدام نفس الأفكار في مشروعك

لو لم تستطيعي تنفيذ تفس الأفكرة مع Panel اتركي ملحوظة وسوف اضع الكود المناسب لذلك

االمثال التالي يوضح عملية السحب والافلات للبكتشر بوكس داخل فورم ويمكن تنفيذ نفس الشئ مع Panel



Dim OriginalPoint As Point

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Me.AllowDrop = True
PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize

End Sub

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

OriginalPoint = New Point(e.X, e.Y)
PictureBox1.DoDragDrop(PictureBox1, DragDropEffects.Move)

End Sub

Private Sub Form1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop

Dim DestinationPoint As Point
Dim pBox As PictureBox

DestinationPoint = New Point(e.X, e.Y)
pBox = e.Data.GetData(PictureBox1.GetType())

DestinationPoint = Me.PointToClient(DestinationPoint)
DestinationPoint.Offset(-OriginalPoint.X, -OriginalPoint.Y)
pBox.Location = DestinationPoint

End Sub

Private Sub Form1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter

If e.Data.GetDataPresent(PictureBox1.GetType()) Then

e.Effect = DragDropEffects.Move

End If

End Sub

End Class
Public Class Form1

والمثال التالي يوضح نفس الفكره ولكن مع الباتون وأيضا يمكنك عمل نفس الشئ من داخل Panel



Dim OriginalPoint As Point

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.AllowDrop = True
End Sub

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

OriginalPoint = New Point(e.X, e.Y)
Button1.DoDragDrop(Button1, DragDropEffects.Move)

End Sub

Private Sub Form2_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragDrop

Dim DestinationPoint As Point
Dim btn As Button

DestinationPoint = New Point(e.X, e.Y)
btn = e.Data.GetData(Button1.GetType())

DestinationPoint = Me.PointToClient(DestinationPoint)
DestinationPoint.Offset(-OriginalPoint.X, -OriginalPoint.Y)
btn.Location = DestinationPoint

End Sub

Private Sub Form2_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyBase.DragEnter

If e.Data.GetDataPresent(Button1.GetType()) Then

e.Effect = DragDropEffects.Move

End If

End Sub
End Class
Public Class Form2

بالتوفيق

أخوك عمر

#6

اخي الفاضل fouad

اشكرك جزيل الشكر ........الكود يعمل بشكل صحيح .... بارك الله فيك

........................................................................

اخي الفاضل a_pess "عمر

صراحه .......................ابدعت ......وما قصرت...........الله يبارك فيك

شكرا جزيل الشكر

تم تعديل هذه المشاركة بواسطة الكتكوووته في 7 ديسمبر 2008 في 01:58

#7

هذا واجبنا نفعنا الله وإياكم بما علمنا من علمه

وفقكم الله لطاعته وإياي

سبحان الله وبحمده سبحان الله العظيم

لا تنسونا من صالح دعائكم ...

وفقكم الله وسدد خطاكم ...

مواضيع مشابهة