أخبار

 

تسجيل الدخول

أهلا, زائر. الرجاء الدخول أو التسجيل
آب 20, 2008, 01:21:41
اسم المستخدم: كلمة المرور:
تسجيل الدخول باسم المستخدم، كلمة المرور و مدة الجلسة

هل نسيت كلمة المرور؟

الإحصائيات

Members: 679
News: 194
Web Links: 3

مواضيع ذات صلة

آخر 10 أعضاء

sky_blue
الحجري
manchsteralex2000
eliventurr
ahsoft
momo momo
ahdalati
solly71
عادل حمود
ferass

إعلانات

Google
 
عالم الفيجوال بيسك دوت نت منتديات عالم الفيجوال بيسك دوت نت
جووجل
عمل Drag&Drop PDF Print E-mail
User Rating: / 0
PoorBest 
Written by أيوب جمال الإدريسي   
انأحد, 15 حزêراو 2008

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

 

سوف نرى في هذا الدرس الصغير كيف يمكننا عمل 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

Be first to comment this article
RSS comments

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

 
Next >
Advertisement

جميع حقوق الطبع محفوطة لموقع عالم الفيجوال بيسك دوت نت


hit counter