السلام عليكم و رحمة الله تعالى و بركاته,,,
لتسهيل تصفح هذا الموضوع, سأقوم بزيادة الروابط نحو الردود التي تحتوي على التلميحات و الخدع المهمة :
كيف تقوم بعملية سحب/إفلات ملفات من و إلى مستكشف ويندوز؟
كيف ننسخ و نقص ملفا إلى Clipboard؟
كيف نظهر نافذة بالقرب من شريط المهام مهما كان مكانه؟
كيف تفتح ملفا و تترك للمستخدم حرية اختيار البرنامج المضيف عن طريق النافذة Open As؟
كيف نستعلم عن سلة المهملات و كيف نفرغها؟
كيف تقوم بعملية بحث عن ملف داخل مجلد و المجلدات الداخلية بكل سهولة؟
كيف تظهر نص مساعدة على مربع نص؟
كيف تظهر مربع حوار Properties للملفات, المجلدات و وحدات التخزين؟
أبسط طريقة لضغط محتوى مجلد إلى ملف ZIP؟
كيف تربط Enum بمربعات من نوع Combo box أو ListBox؟
كيف تظهر الصور المتحركة على مشاريع الدوت نت؟
التلميحة القديمة الجديدة : كيف تنشئ مجلدا مشخصا بأيقونة و وصف؟
كيف تغير قيمة الخصائص و الحقول المقروءة فقط؟
استعمالات متقدمة للمعامل If بواسطة Muhammad alaa
كيف تعرف الدالة التي قامت بالنداء على الدالة الحالية؟
كيف تتجاهل دوال محددة وقت تنفيذ الكود جملة جملة على Debugger؟
مربع بروجرس بار عمودي لمشاريعكم
كيف تظهر الصور المتحركة على مشاريع الدوت نت؟ (طريقة أخرى)
كيف تظهر محتوى البيانات المسحوبة أثناء عملية سحب و إفلات؟
كيف تتحكم في وقت تنفيذ Blocking Methods؟
كيف تصل إلى دالة محمية (Private و Protected) و تنادي عليها؟
أبسط طريقة لفك ضغط ملف مضغوط من نوع ZIP؟
كيف تستعمل مدقق وورد اللغوي لتصحيح النصوص على مشاريعك؟
كيف تحمل ملف MS EXCEL إلى DataGridView؟
كيفية الحصول على نسخة من الفئه RegistryKey من Native Registry Handle بواسطة Muhammad alaa
كيف تتحقق من صحة سيناريو T-SQL قبل تنفيذه؟
كيف تدمج ترجمة النصوص إلى مشاريعك؟ (Google Translator)
كيف تدعم ترجمة النصوص على مشروعك؟ (Bing Translator)
كيف تقوم بتحميل جزء أو مقطع من ملف من على موقع؟
كيف تنادي على دالة حدث من مسلك مغاير للمسلك الرئيسي للتطبيق؟
كيف تحصل على اقتراحات google كما هو الحال على شريط العناوين لمتصفح google chrome؟
كيف تحصل على أيبي الأنترنت من جهاز مرتبط بشبكة محلية؟
كيف تفك برمجيا ضغط رابط مضغوط (التعرف على الرابط الأصلي)؟
----------------------------------------------------------------------------------
باسم الله نبدأ مع أول تلميحة :
كيف تقوم بعملية سحب/إفلات ملفات من و إلى مستكشف ويندوز؟
سنتكلم في هذا الموضوع عن كيفية سحب ملفات من مستكشف ويندوز و إفلاتها على برامجنا و العكس كذلك أي سحب ملفات من برامجنا و إفلاتها على مستكشف ويندوز. العملية الأولى تتم في خطوتين. الأولى إعلام المستخدم أن المربع على النموذج لائحة كان أو غيره يقبل سحب و إفلات ملفات عليه. الثانية نقوم فيها بالحصول على الملف أو لائحة الملفات التي قام المستخدم بسحبها من مستكشف ويندوز نحو المربع المستقبل على نموذج برنامجنا. و هذا تفصيل للعمليات...
سحب الملفات من مستكشف ويندوز و إفلاتها على مربع على واجهة المستخدم :
أولا, سنحتاج إلى تحديد خاصية قبول سحب و إفلات العناصر من المربع المعد لهذا العمل. في موضوعنا هذا سيكون لائحة من نوع ListView.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' تنشيط خاصية قبول إفلات الأشياء على اللائحة ListView1.AllowDrop = True End Sub
ثانيا, سنقوم بعملية قبول سحب و إفلات الملفات في خطوتين. الخطوة الأولى نقوم بها داخل الحدث DragOver. في الدالة المشتركة في هذا الحدث, نقوم بتفحص عملية السحب و الإفلات و التحقق من أننا ندعم العملية ثم نحدد نوع العملية المقبولة من طرف برنامجنا. نسخ الملفات فقط.
' يحدث عندما يسحب المستخدم شيئا فوق الائحة على النموذج Private Sub ListView1_DragOver(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragOver ' التأكد من أن العملية عملية إفلات ملفات If e.Data.GetDataPresent(DataFormats.FileDrop) Then ' نعلم المستخدم و النظام أننا فقط سننسخ الملف عن طريق الكيرسور الملائم e.Effect = DragDropEffects.Copy Else ' لا نتعامل إلا مع الملفات e.Effect = DragDropEffects.None End If End Sub
الخطوة الثانية, نقوم بها في الدالة المشتركة في الحدث DragDrop. داخل الدالة, نقوم بالوصول إلى الملف أو الملفات المسحوبة التي تم إفلاتها. نتأكد من أنها ملفات موجودة ثم نقوم بزيادة مساراتها إلى اللائحة.
' يحدث عندما يفلت المستخدم ملف على اللائحة
Private Sub ListView1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles ListView1.DragDrop
' التأكد من أن العملية عملية إفلات ملفات
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' الوصول إلى لائحة الملفات التي تم إفلاتها على اللائحة
Dim files As String() = e.Data.GetData(DataFormats.FileDrop)
' زيادة مسارات الملفات على اللائحة
For Each s As String In files
If IO.File.Exists(s) Then
ListView1.Items.Add(s)
Else
MsgBox("العنصر الذي تم إفلاته غير مقبول : " + s, MsgBoxStyle.Critical)
End If
Next
End If
ListView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent)
End Subسحب الملفات من برنامجنا نحو مستكشف ويندوز :
الآن و بعد تحميل اللائحة ListView1 بمجموعة من مسارات الملفات عن طريق سحبها و إفلاتها من مستكشف ويندوز, دعونا نتكلم الآن عن العملية المعاكسة ألا وهي سحب عناصر اللائحة – مسارات الملفات – و إفلاتها على مستكشف ويندوز. هذه العملية تتم في خطوة واحدة داخل الحدث ItemDrag للائحة ListView1. داخل الدالة المشتركة في الحدث, نقوم بالحصول على عناصر اللائحة التي قام المستخدم بتحديدها. بعد ذلك, نقوم ببدء عملية سحب الملفات المتمثلة في المسارات على اللائحة مع تحديد نوعية العملية في سحب و إفلات للنسخ.
' يحدث عندما يتم سحب عنصر من عناصر اللائحة Private Sub ListView1_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles ListView1.ItemDrag ' الحصول على عدد العناصر Dim files(ListView1.SelectedItems.Count - 1) As String ' تحميل لائحة العناصر/الملفات لتوصيلها إلى مستكشف ويندوز Dim i As Integer = 0 For Each lvi As ListViewItem In ListView1.SelectedItems files(i) = lvi.Text i = i + 1 Next ' بدء عملية السحب ' تحديد عملية السحب/الإفلات في النسخ فقط DoDragDrop(New DataObject(DataFormats.FileDrop, files), DragDropEffects.Copy) End Sub
حددنا عملية السحب والإفلات في النسخ فقط حتى لا يتم نقل الملفات أثناء تجريب البرنامج المرفق. إذا حددنا العملية في نسخ و نقل الملفات, سيقوم مستكشف ويندوز باختيار عملية النقل أولا و سيحتاج المستخدم إلى الضغط على الزر كنترول أثناء العملية لتعديل العملية إلى نسخ.
تحياتي...
