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

التحكم في استعراض الملفات

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

السلام عليكم

لقد قمت بعمل برنامج وفيه زر لاستعراض الملفات من نوعية معينة وقد قمت بوضع فلتر لتحديد نوع الامتداد للملف على سبيل لمثال xls ولكن المشكلة عندي هي عند وضع *.* يتم عرض جميع الملفات وعند اختيار اي ملف من امتداد اخر يقبله البرنامج فارجو منكم المساعدة بحيث اذا امكن ان لا يتم الموافقة على عرض جميع الملفات او على الاقل عدم قبول البرنامج له

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

ارفق الكود

Private Sub Open(ByVal sender As Object, _
 	ByVal e As System.EventArgs) Handles btnOpenInput.Click

 	Dim btn As Button = DirectCast(sender, Button)

 	'The name of the TextBox to return the selected file path to is stored
 	' in the Tag property of the button.
 	Dim tb As TextBox = _
 	DirectCast(btn.Parent.Controls(btn.Tag.ToString()), TextBox)

 	Dim diag As New OpenFileDialog()
 	With diag
 	.CheckFileExists = True
 	.CheckPathExists = True
 	.Multiselect = False
 	.RestoreDirectory = True
 	.Title = "اختر الملف "
 	.Filter = "excel (*.xls)|*.xls"
 	.DefaultExt = CStr(.AddExtension = False)
 	.ShowDialog()

 	'Set the file path if one was selected
 	If .FileName.Trim() <> "" Then _
 	tb.Text = .FileName

 	End With

 	diag.Dispose()

	End Sub
#2

يمكنك التحقق من امتداد الملف المختار و ذلك بالتحقق من الحروف ما بعد آخر نقطة في محتوى الخاصية FileName بعد المناداة على الدالة ShowDialog

If diag.FileName.SubString(diag.FileName.Length - 3) = "xls" Then
' امتداد الملف صحيح
Else
' امتداد الملف خاطئ
End If
#3

ويمكنك أيضا معرفة نوع الملف من خلال الوظيفة

System.IO.Path.GetExtension(filename)

لكن لدى سؤال

لماذا تضع فلتر *.* وأنت لا تريد إلا ملفات xls فقط؟!

من البديهى أنك وضعت *.* يعنى أنك تقبل كل أنواع الملفات

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

feed.1.gif

#4

يبدو أنه يتكلم عن الحالة التي يمكن للمستخدم إدخال *.* مكان اسم الملف على مربع الحوار و الضغط على زر Enter فيصبح بمقدور المستخدم اختيار جميع أنواع الملفات

#5

آه فهمت

شكرا أخى العزيز محمد رضى على التوضيح ,, لقد فهمت بطريقة خاطئة

إذاً ليس أمام السائل إلا أن يتحقق من نوع الملف بالطرق التى تم ذكرها

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

feed.1.gif

#6

شكرا اخوتي على الرد

كما قال الاخ محمد فانا اقصد عند وضع *.* في مربع الحوار يظهر جميع الملفات وعند اختيار اي نوع اخر من الملفات يقبله وانا لا اريد ذلك

اعذروني فانا لمافهم القصد من الكود المكتوب ممكن التوضيح؟

#7

الكود الذى وضعه الأخ الفاضل محمد رضى

If diag.FileName.SubString(diag.FileName.Length - 3) = "xls" Then
' امتداد الملف صحيح
Else
' امتداد الملف خاطئ
End If

يقوم باستدعاء الدالة SubString والتى تقوم بقص جزء محدد من المتغير النصى وفى الكود الموضح يقوم الأخ محمد بقص آخر 3 حروف من المتغير الذى يحمل مسار الملف الذى تم اختياره وهذه الحروف هى امتداد الملف ثم يقارنها بالقيمة xls وهو نوع ملفات الاكسل الذى تسمح به أنت فى برنامجك

هذه الطريقة عيبها أن امتداد قد يزيد عن ثلاثة حروف فمثلا لو لدى ملف بإسم MyFile.abcxls ففى هذه الحالة لو قمت باختيار هذا الملف سيتحقق الشرط حيث أن آخر ثلاثة حروف هى xls ويمكن التغلب على هذه المشكلة بقص الجزء بعد آخر نقطة فى إسم الملف أو استخدام الطريقة التى ذكرتها فى مشاركتى السابقة

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

feed.1.gif

#8

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

استفسار اخر لو انني اريد ان اضيف اكثر من امتداد مثلا اريد اضافة امتداد ملف اكسل xls وامتداد لنفس الملف لاوفيس 2007 xlsx فكيف من الممكن فعل ذلك؟

وشكرا

تم تعديل هذه المشاركة بواسطة sam_fere في 3 ديسمبر 2009 في 14:55

#9

يمكن أن تجمع الامتدادات المدعومة من طرف تطبيقك و وضعها في مصفوفة و عند اختيار ملف من طرف المستخدم تقوم باستخلاص امتداد الملف المختار بالطريقة التي أشار إليها الأخ العزيز GHOST2K10 و تقوم بالبحث عنه داخل المصفوفة.

#10

لو كنت تقصد التحقق من نوع الملف فكما بين لك الأخ الفاضل محمد رضى أما لو كنت تقصد تحديد أكثر من نوع من الملفات للأداة OpenFileDialog فيتم ذلك بدمج الأنواع معا باستخدام الرمز ;

OpenFileDialog.Filter = "*Excel Files|.xls;*.xlsx"

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

feed.1.gif

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