تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
شرح كيفية برمجة( مثال نسخ الملفات من مكان انت تحدده الى مكان انت تحدده بامتداد انت تحدده)
#1

المثال المراد شرحه هنا


فيه ادوات مش ضروري نستخدمها مثل مربعات نص عرض المسار ممكن نشتغل من دونها.
اضف الادوات بالتسميات الموضحة بالصورة
prg = progressbar
bgw_purn = backgroundworker
------------------------------
الان قم باضافة قائمة الامتدادات الى اداة Cobobox


كود :
*
*.txt
*.bat
*.exe
*.368
*.dat
*.HTM
*.wmz
*.DUN
*.xml
*.INF
*.wiz
*.CHM
*.DOT
*.COM
*.SCR
*.HTA
*.ISP
*.ZIP
*.DLL
*.ini
*.pot
*.icm
*.CER
*.INS
*.swf
*.REG
*.rdw
*.PWL
*.WAV
*.HLP
*.ASF
*.BMP
*.000
*.jpg
*.gif
*.mpeg
*.map
*.sig
*.cnt
*.man
*.VER
*.ICW
*.log
*.flv
*.wmv
*.mp3
[align=center]*.wav[/align]

--------------------------------
اولا استدعي ماتسمى بفضاء الاسماء
كود :
Imports System.IO

ثم اكتب التعريفات في منطقة التصريحات العامة
كود :
Dim cou As Integer
    Dim fbd1 As New FolderBrowserDialog
    Dim fbd2 As New FolderBrowserDialog
    Dim all As New List(Of String)
في حدث النقر لزر تحديد المجلد الاصل لنسخ الملفات منه اكتب
كود :
If fbd1.ShowDialog = Windows.Forms.DialogResult.OK Then
            frst_folder.Text = fbd1.SelectedPath
            On Error Resume Next
            For Each itm In Directory.GetFiles(fbd1.SelectedPath & "\", tens.Text)
                all.Add(itm)
            Next
            cou = all.Count
        End If
        prg.Minimum = 0
        prg.Maximum = cou

شرح الكود على طريقتي:
كود :
If fbd1.ShowDialog = Windows.Forms.DialogResult.OK Then
هذا الشرط ضروري ومهم بحيث لا نسمح للبرنامج بالعمل مالم يقم المستخدم بنقر زر موافق
كود :
frst_folder.Text = fbd1.SelectedPath
ليست ضرورية ويمكننا الاستغناء عنها فهي فقط لتسلية المستخدم ولا تحتاج شرح
كود :
On Error Resume Next
لتخطي المشاكل والاستمرار في الحياة (كم هي رائعة هذه الجملةSmile)
كود :
For Each itm In Directory.GetFiles(fbd1.SelectedPath & "\", tens.Text)                all.Add(itm)
           Next

يقول لكل شيء موجود في المجلد المحدد (عبر مستعرض المجلدات) وفق امتداد محدد من الكومبوبوكس يضيفها الى القائمة النصية all المعرفة بهيدر البرنامج(ان صح التعبير)
كود :
cou = all.Count
هذا لحساب محتويات المصفوفة
كود :
prg.Minimum = 0        prg.Maximum = cou

هذا تعيين الحد الادنى والاعلى لاداة الشريط prg=progressbar
والحد الاعلى هو عدد محتويات المصفوفة
-------------------
لنذهب الان الى حدث النقر للزر المسؤول عن تحديد المجلد الهدف
ونكتب به
كود :
If fbd2.ShowDialog = Windows.Forms.DialogResult.OK Then            scnd_folder.Text = fbd2.SelectedPath
        End If
نفس الشرط الاول لمستعرض المجلدات
لننتقل الان الى زر بدء النسخ
كود :
If tens.Text.Trim.Replace(" ", "") = "" Then MsgBox("حدد الامتداد") : Exit Sub        If frst_folder.Text.Trim.Replace(" ", "") = "" Then MsgBox("حدد المجلد الاصل") : Exit Sub
        If scnd_folder.Text.Trim.Replace(" ", "") = "" Then MsgBox("حدد المجلد الهدف") : Exit Sub
        If bgw_purn.IsBusy Then Exit Sub
        prg.Value = prg.Minimum
        bgw_purn.RunWorkerAsync()

الشرح
كود :
If tens.Text.Trim.Replace(" ", "") = "" Then MsgBox("حدد الامتداد") : Exit Sub
        If frst_folder.Text.Trim.Replace(" ", "") = "" Then MsgBox("حدد المجلد الاصل") : Exit Sub
        If scnd_folder.Text.Trim.Replace(" ", "") = "" Then MsgBox("حدد المجلد الهدف") : Exit Sub

هذي للتحقق من ان مربعات النص ليست فارغة ولا تحتوي فراغات
كود :
If bgw_purn.IsBusy Then Exit Sub
بدل ما نعطل الزر نتحقق هل الباك قراوند مشغول ام لا
ان كان مشغل يخرج من الروتين
كود :
prg.Value = prg.Minimum
هذا لاعادة القيمة للبرقريس بار الى الصفر
كود :
bgw_purn.RunWorkerAsync()
جاء وقت العمل لنذهب لهذا العمل
لننتقل الان الى bgw_purn
ضمن الحدث dowork
كود :
For Each Fi In all            File.Copy(Fi, fbd2.SelectedPath & "\" & IO.Path.GetFileName(Fi), False)
            ListBox1.Items.Add(Fi)
            prg.Value += 1
            ListBox1.SelectedIndex = ListBox1.Items.Count - 1
        Next

الشرح
كود :
For Each Fi In all
يعني لاي شي موجود في القائمة النصية
كود :
File.Copy(Fi, fbd2.SelectedPath & "\" & IO.Path.GetFileName(Fi), False)
يقوم بنسخ الملف الذي اتى عليه الدور حسب مساره والمخزن في المتغير Fi الى المجلد الهدف ثم لابد من اضافة الخط المائل "\" ثم اسم الملف المنسوخ يمكنك كتابته يدويا لكنه مرهق فالافضل نعطيه اسمه القديم(قديمك نديمك) طبعا المسار مخزن بالمتغير Fi فلو وضعناه هكذا سيظهر خطا فادخ لانه يحتوي مسار كامل لكن لناخذ من المسار اسم الملف فقط بالطريقة الموجودة وهي:
كود :
io.path.getfilename(Fiممكن تحط اي مسار لو حبيت)

سالفة True و False هذي للكتابة على الملف
كود :
ListBox1.Items.Add(Fi)            prg.Value += 1
            ListBox1.SelectedIndex = ListBox1.Items.Count - 1

شغلات زيادة فقط الهاء المستخدم
السطر الاول اضافة المسار كاملا الى Listbox1
ولو حبيت فقط اسم الملف اضف
كود :
io.path.getfilename(Fi)


عند حدث
RunWorkerCompleted
تكتب رسالة انه انتهى لكن هذا الحدث سيحدث سواء عمل شيئا ام لم يعمل ..يمكنك وضع شرط او قيمة ما بعد آخر كود في عملنا السابق لتبين للمستخدم هل تم النسخ ام لا


الخطوة التي لا احبذها لكنها ضرورية حتى نعرف نتحاشاها وهي ضمن حدث تحميل الفورم اكتب
كود :
Control.CheckForIllegalCrossThreadCalls = False


ارجو ان اكون قدمت لكم شيئا مفيدا
الدعاء لي والتقييم(هههههه طماع)
السلام عليكم ورحمة الله وبركاته
أستودعكم الله الذي لا تضيع ودائعه أرجو ان تجدوا بمشاركاتي ما يجعلكم تدعون لي بخير ان تحتم غيابي.
الرد }}}}
تم الشكر بواسطة:
#2
جزاك الله خيرا وجعله فى موازين حسناتك
فعلا رائع ومتعوب عليه
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  شرح كيفية صنع محرر html واستخدامه كـ dll سعود 6 1,593 26-08-13, 09:21 PM
آخر رد: Sajad
  مثال بسيط لتغيير طريقة استخدام اداة العنان Label مع الشرح RaggiTech 0 800 20-10-12, 11:50 AM
آخر رد: RaggiTech
  استخراج الأيقونات من الملفات التنفيذية RaggiTech 0 699 17-10-12, 10:17 PM
آخر رد: RaggiTech
  مثال لادارة صلاحيات كل مستخدم لوحده RaggiTech 0 1,050 17-10-12, 10:05 PM
آخر رد: RaggiTech
  مثال تحريك الفورم من غير اطار RaggiTech 0 666 17-10-12, 10:00 PM
آخر رد: RaggiTech
  كيفية عمل صورة - مدورة - Rouded PictureBox ! RaggiTech 0 736 17-10-12, 09:55 PM
آخر رد: RaggiTech
  كيفية عمل String عشوائي ! RaggiTech 0 525 17-10-12, 09:54 PM
آخر رد: RaggiTech
  مثال يشمل عملية الحذف والتعديل والاضافة على قاعدة البيانات RaggiTech 0 1,153 17-10-12, 09:23 PM
آخر رد: RaggiTech
  التعامل مع الملفات RaggiTech 0 448 17-10-12, 09:16 PM
آخر رد: RaggiTech
  فائدة - كيفية عمل Ping RaggiTech 0 1,140 17-10-12, 09:00 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم