با سلام و خسته نباشید دوستان محترم
و تشکر از حسن نظر دوستان در پاسخگویی
من یک نمونه برنامه 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 لطف کنید .
آقای جلالی یک نمونه برنامه با کدهای که پیشنهاد نمودید چون متاسفانه نتونستم توی برنامه جفت و جورش کنم ممنون از لطف شما
دوست عزیز متاسفانه
من با ویرایشگر سایت مشکل دارم
یعنی من حتی نمی دانم چگونه می توانم یک عکس به پاسخ ام ضمیمه کنم چه برسد به ارسال کد نمونه
برای توضیح کارکرد کد عرض به خدمتتان
در فرم دو عدد لیست باکس ایجاد می کنیم
در قسمت تنظیمات 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 DataObject, Effect As Long,_
Button As Integer, Shift As Integer, X As Single, Y As Single)
List1.AddItem Data.GetData(1)
List2.RemoveItem (List2.ListIndex)
End Sub
به همین خوشمزگی!!
اینم سورسش
[
attachment=7138]