الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عرض الفولدرات والملفات فى شجره

بدأه pro2007 في 13 أكتوبر 2009 · 5 رد · 556 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكــم ورحمـة الله وبركاتــه ،،

هل توجد طريقه اسرع من الطريقه التى توجد فى الملف المرفق لعرض المجلدات والملفات بصوره اسرع

هذه الداله التى تقوم بعمل سكان على المسار تمهيدا لعرضه

Sub ScanFolder(ByVal folderSpec As String, ByRef currentNode As TreeNode)

 Dim thisFolder As String
		Dim allFolders() As String


 allFolders = Directory.GetDirectories(folderSpec)
		For Each thisFolder In allFolders
			Dim Nd As TreeNode
			Nd = New TreeNode(thisFolder)
			currentNode.Nodes.Add(Nd)
			folderSpec = thisFolder
			ScanFolder(folderSpec, Nd)

Me.Refresh()
		Next
	End Sub

ولكم جزيل الشكر

CustomExplorer.rar

لا اله الا انت سبحانك انى كنت من الظالمين

#2

يمكنك التحايل على هذه المشكلة بعمل مسح على مستويين فقط بمعنى

لنفرض أن الهارد مقسم إلى جزء واحد فقط C

عند بداية تشغيل البرنامج تقوم بعمل مسح على الأقراص والمجلدات التى بداخلها فقط فتكون الشجرة محتوية على فرع رئيسي وهو C وبداخله المجلدات التى بداخله مثل Windows , Program Files , Documents

عندما يقوم المستخدم بعمل تمديد Expand للفرع الرئيسي C تقوم بعمل مسح على الفروع التى بداخله فتملأ الفروع Windows , Program Files , ...etc وهكذا

وبهذه الطريقة توهم المستخدم أنك قمت بتحميل كافة الملفات والمجلدات الموجودة على الهارد

هذه هى الطريقة التى أستخدمها

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#3

اولا شكرا لك يا اخى على ردك السريع والله يبارك فيك يمكن تعديل الكود وارفاقه لى لو تكرمت لانى بصراحه مش واضاحه معايا شوايه

لا اله الا انت سبحانك انى كنت من الظالمين

#4

أنا فى العمل الآن ,, قمت بعمل تعديل سريع على الفورم وأعتذر مقدما عن أى خطأ قد تجده لأنى كتبت الكود بسرعة

لو واجهتك أى مشكلة فأخبرنى على الفور

هذه هى الفورم بعد التعديل

CustomExplorerForm.rar

إن قلت قال الله قال رسولـه همزوك همز المنكر المتعالي
أو قلت قد قال الصحابة والألـى تبعاً لهم بالقول والأعمال
أو قلت قـال الشافعي وأحمد و أبو حنيفة والإمام الغالي
صدوا عن وحي الإله ودينـه واحتالوا على حرام الله بالإحلال
يا أمةً لعبت بدين نبيها كتلاعب الصبيان في الأوحال
حاشا رسول الله يحكم بالهوى تلك إذاً حكومة الضلال

feed.1.gif

#5

اشكرك جارى التحميل الان وسوف يتم الرد باذن الله اذا لم استوعب شىء

وجزاك الله خيرا

لا اله الا انت سبحانك انى كنت من الظالمين

#6

فكره التى طرحها الأخ ghost هى الأمر الصحيح و الذى استخدمه انا ايضا لسهولته و لكن إن لم يكن هذا يرضيك يمكنك فعل امر اخر و هو طويل بعض الشئ:

قم فى البدايه بإضافة nodes رئيسية تماثل الـ drives الموجوده بجهازك بعدها قم بإنشاء threads بعدد هذه الـ nodes و بداخل كل منهم قم بعمل loop لملء الفرع الخاص به و بعد الإنتهاء قم بغلق هذا الـ thread.

قد تستخدم ThreadPool.QueueUserWorkItem بدلا من انشاء thread كامل و تأخذ على نفسك عبء إيقافه و حذفه، فالداله السابق ذكرها تقوم بتنفيذ الداله التى تمررها لها فى thread منفصل تبعا لمكان دالتك داخل الـ queue الخاصه بالـ threadpool.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

مواضيع مشابهة