ايران ويج

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

من یک نمونه برنامه DragAndDrop میخوام که امکان Drag کردن از listbox را به listbox دیگه را داشته باشه البته جستجو کردم چیزی بر اساس listbox به listbox یا تکست پیدا نکردم .

البته کامپاننتهایی هست که این کار را انجام می ده ولی حتی المقدور نمی خوام از کامپاننت استفاده کنم
با تشکر فراوان
سلام.

کد:
' Code managing dropping from list one
' to list two
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     List1.OLEDrag    ' Begin dragging
End Sub
Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
     ' Only allow moves
     AllowedEffects = vbDropEffectMove
     ' Assign the ListBox selection to the DataObject
     Data.SetData List1
End Sub
Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
     Dim strList As String
     ' Check the format of the DataObject
     If Not Data.GetFormat(vbCFText) Then Exit Sub
     ' Retrieve the text from the DataObject
     strList = Data.GetData(vbCFText)
     ' If the item was not dropped on itself
     If Not strList = List2.Text Then
         List2.AddItem strList
         'Remove the item from the ListBox
         List1.RemoveItem List1.ListIndex
     End If
End Sub
''
''
'' Code managing dropping from list one
'' to list two
''
Private Sub List2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
     List2.OLEDrag    ' Begin dragging
End Sub
Private Sub List2_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
     ' Only allow moves
     AllowedEffects = vbDropEffectMove
     ' Assign the ListBox selection to the DataObject
     Data.SetData List2
End Sub
Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
     Dim strList As String
     ' Check the format of the DataObject
     If Not Data.GetFormat(vbCFText) Then Exit Sub
     ' Retrieve the text from the DataObject
     strList = Data.GetData(vbCFText)
     ' If the item was not dropped on itself
     If Not strList = List1.Text Then
         List1.AddItem strList
         'Remove the item from the ListBox
         List2.RemoveItem List2.ListIndex
     End If
End Sub
خیلی ممنون ازکد ارسالی
ولی متاسفانه عمل نمی کنه . با کشیدن و رها کردن (متن) در لیست باکس عمل انتقال انجام نمیشه
و فقط خاصیت AllowedEffects = vbDropEffectMove را عمل می کنه.
اگه امکان داره یک نگاه مجدد بیندازین منتظرم.
متشکر
[code]
Public Class Form1

Public Dataa As String


Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
ListBox2.Focus()
Dataa = ListBox1.SelectedItem
End Sub

Private Sub ListBox2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox2.MouseUp
If Dataa <> "" Then
ListBox2.Items.Add(Dataa)
End If
Dataa = ""

End Sub

Private Sub ListBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseUp
Dataa = ""
End Sub

End Class

از لیست باکس 1 بردار ودر لیست باکس 2 به انداز
البته اگر در لیست باکس 1 داده ایی باشد
جناب آقای جلالی متشکر از لطف شما
متاسفانه نتونستم با کدهای شما جواب بگیرم احتمالا مشکل کار با منه خواهش می کنم اگر امکان داره یک Sample لطف کنید .
[font=Arial]
?Sample
آقای جلالی یک نمونه برنامه با کدهای که پیشنهاد نمودید چون متاسفانه نتونستم توی برنامه جفت و جورش کنم ممنون از لطف شما
دوست عزیز متاسفانه
من با ویرایشگر سایت مشکل دارم
یعنی من حتی نمی دانم چگونه می توانم یک عکس به پاسخ ام ضمیمه کنم چه برسد به ارسال کد نمونه
برای توضیح کارکرد کد عرض به خدمتتان
در فرم دو عدد لیست باکس ایجاد می کنیم
در قسمت تنظیمات Listbox1
ودر قسمت کلکشن چند ایتم اضافه می کنیم
برنامه را اجرا می کنیم باید در فرم دو عدد لیست باکس که یکی خالی ودیگری چند عدد ایتم دارد موجود باشد
اگر تا اینجا رسیدی به مرحله بعد می رویم
از نظر ظاهری دراپ داون برداشتن ایتم از یک کنترل وگذاشتن در یک کنترل دیگر با استفاده از کلیک چپ موس است اما
از نظر برنامه نویسی دراپ داون می توان گفت انتخاب ایتم در یک کنترل با MouseDown و کپی ان ایتم در کنترل دیگر
با MouseUp می باشد
ولی وقتی در روی یک کنترل MouseDown انجام می دهیم ودر همان حال دکمه موس را نگه داشته و بعد از حرکت دادن موس
در روی یک کنترل دیگر MouseUp انجام می دهیم اونت MouseUp انجام یافته متعلق به کنترل اولی است نه متعلق به
کنترل دومی چون فوکاس در اختیار کنترل اولی است پس تغییر فوکاس لازم است
برای کنترل لیست باکس 1 در اونت MouseDown کدزیر را وارد می کنیم

Private Sub ListBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox1.MouseDown
ListBox2.Focus()
Dataa = ListBox1.SelectedItem
End Sub
ودراونت MouseUp لیست باکس 2 کد زیر را وارد می کنیم(کاپی و پیست می کنیم)


Private Sub ListBox2_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles ListBox2.MouseUp
If Dataa <> "" Then
ListBox2.Items.Add(Dataa)
End If
Dataa = ""

End Sub
برای انکه ایتم در اثر کلیک موس یا دابل کلیک موس به dataa انتقال پیدا نکند در اونت ListBox1_MouseUp
کد زیر را وارد می کنیم
Dataa = ""
در ضمن dataa در سطح public وبه صورت string تعریف شده است
اگر با این اوصاف باز مشکلت حل نشد روش ارسال فایل ضمیمه را یادم بده تا برایت ارسال کنم
ویا ادرس ایمیل
در ضمن این کدها در vb.net2010 نوشته - تست شده و ok شده است
با تشکر از لطف شما
من این کدها را برای VB6 می خواستم، متاسفانه نمی تونیم با VB6 این کدها را SET کنم.
من هم جایی برای فایلهای ضمیمه ندیدم مشکل شما را در ارسال فایل دارم .
دوستان عزیز

برای قرار دادن کد یا لینک عکس ها می تونید از قسمت پاسخ سریع که در پائین تمامی تاپیک ها

قرار داره استفاده کنید ( همین جایی که الان دارید باهاش پست جدید ارسال می کنید )

اما برای استفاده از امکانات پیشرفته و قرار دادن عکس یا فایل ضمیمه باید ابتدا بر روی کلید "پاسخ جدید"

که در ابتدا و انتهای هر تاپیک وجود داره کلیک کرده و سپس با استفاده از امکانات ویرایشگر حرفه ای

پست ها و فایل های مورد نظرتون رو ارسال کنید.
در ضمن برای درگ و دراپ کردن آیتم های دو تا لیست باکس داخل یک فرم باید:

اول خاصیت OLEDragDrop دوتا لیست رو بر روی Automatic بزارید

و سپس با استفاده از رویداد OLEDragDrop گزینه مورد نظرتون رو اضافه یا حذف کنید.

کد php:
Private Sub List1_OLEDragDrop(Data As DataObjectEffect As Long,_
 Button 
As IntegerShift As IntegerAs SingleAs Single)
List1.AddItem Data.GetData(1)
List2.RemoveItem (List2.ListIndex)
End Sub 
به همین خوشمزگی!!

اینم سورسش

[attachment=7138]