|
بسم الله الرحمن الرحيم سوف نرى في هذا الدرس الصغير كيف يمكننا عمل Drag And Drop لأي ملف على برنامجنا وهذا الأمر جد مفيد فمثلا لو كنت تعمل على برنامج للصور فسيكون من الجميل أن تتيح الامكانية للمستعمل بأن يقوم بسحب مجموعة صور الى برنامجك و قراءتها بشكل تلقائي ونفس الأمر بالنسبة لبرنامج موسيقى مثلا لكن مثالنا سيكون على برنامج صور نقوم أولا بانشاء مشروع جميل صغير وجديد :D نضيف الى الفورم PictureBox و أداتي Buttons الاولى تأخذ اسم Next و الثانية Previous ندخل الآن الى الكود و نقوماولا بتعريف متغيرين في منطقة Public بالأعلى و هما : Public DraggedFiles() As String Public CurrentImageIndex As Integer المتغير الأول هو Array و سوف يحتوي على الملفات او ال Links الخاصة بالملفات المسحوبة الى البرنامج. المتغير الثاني سيحتوي على رقم او Index الصورة المعروضة حاليا في ال Form_Load نكتب الكود التالي : Me.AllowDrop = True أولا قمنا بجعل الForm تقبل حدث ال Droping عن طريق خاصية AllowDrop ثم بعدها أعددنا ال Timer. الآن سنبحث عن الحدث الذي سيحدث عندما نقوم بسحب الملفات الى الفور و هذا الحدث هو Form_DragEnter هذا الحدث ينطلق عند سحب أي ملف الى الفورم و فيه سوف نكتب الكود التالي : Private Sub Form1_DragEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragEnter e.Effect = DragDropEffects.Link End Sub في هذا الحدث قمنا بتحديد نوع البيانات التي نريدها و هي Links بمعنى اننا نريد جلب ال Links لل Objects المسحوبة على الفورم فقط. الحدث الأخير هو ال Form_DragDrop و الذي يحدث حالما نترك الماوس يعني عندما أرمي الملفات المسحوبة على الفورم و نكتب الكود التالي في هذا الحدث : Private Sub Form1_DragDrop(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop DraggedFiles = e.Data.GetData(DataFormats.FileDrop) PictureBox1.Image = Image.FromFile(DraggedFiles(0)) End Sub السطر الأول قمنا فيه بجلب ال LINKS و وضعها في ال Array التي حددناها في الأول و ال e.Data.GetData تقوم بارجاع Array بال Links المسحوبة الى الفورم كما ترون فقد حددنا نوع ال Data و هي DataFormats.FileDrop أي كأننا قلنا لهاجلب لنا المعلومات من الملفات المسحوبة على الفورم. بعد ذلك نظهر الصورة الاولى في ال Array . الى هذه النقطة كل شئ جميل و رائع فقد تمكنا من ادخال ال LINKS الى برنامجنا ووضعها في Array من اختيارنا و يمكننا التعامل معها كما نريد. سنرى الآن كود ال Buttons . Previous Button Private Sub Previous_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If CurrentImageIndex = 0 Then CurrentImageIndex = DraggedFiles.GetUpperBound(0) Else CurrentImageIndex -= 1 End If PictureBox1.Image = Image.FromFile(DraggedFiles(CurrentImageIndex)) End Sub ممممم ، الكود جد بسيط فأولا نقوم بعمل Test ونرى اذا كنا نشاهد الصورة الأولى في اللائحة فاذا كانذلك صحيح فالضفط على Previous يجب ان يعيدنا الى آخر صورة في اللائحة لذا نعدل CurrentImageIndex لتصبح DraggedFiles.GetUpperBound(0) و نحن نعرف ان DraggedFiles.GetUpperBound(0) تقوم بارجاع Index آخر Item في المصفوفة اما اذا لم نكن في أول الصورة فنعود بخطوة واحدة و ننقص 1 من قيمة CurrentImageIndex و بعد ذلك نحمل الصورة الى أداة PictureBox1. Next Button Private Sub Next_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If CurrentImageIndex = DraggedFiles.GetUpperBound(0) Then CurrentImageIndex = 0 Else CurrentImageIndex += 1 End If PictureBox1.Image = Image.FromFile(DraggedFiles(CurrentImageIndex)) End Sub الكود جد مشابه بكود ال Previous Button الا ان هذه المرة نعمل Test ونرى اذا ما كنا في آخر اللائحة فاذا كنا كذلك نعود الى البداية و يكون بذلك CurrentImageIndex=0 اما في غير تلك الحالة فنقوم باضافة 1 الى ال CurrentImageIndex و نحمل بعدها الصورة الى ال PictureBox1. الخاتمة : أتمنى ان يكون هذا الدرس البسيط قد أدى واجبه و افادكم و لو قليلا، طبعا البرنامج ليس كاملا يعني هناك عدة ثغراث فمثلا ماذا سيحدث لو سحبنا ملفا من نوع آخر ؟؟؟ طبعا ستحدث Exception لذا فيمكنكم تعديل الكود ليقبل Extensions محددة... Add as favourites (24) | Quote this article on your site | Views: 686 | E-mail
Only registered users can write comments. Please login or register. Powered by AkoComment Tweaked Special Edition v.1.4.6 AkoComment © Copyright 2004 by Arthur Konze - www.mamboportal.com All right reserved |