کنترل OpenFileDialog
کنترل System.Windows.Forms.OpenFileDialog، به شما اجازه میدهید که یک فایل را انتخاب کرده و بخوانید مثلاً یک فایل متنی را باز کرده و محتویات آن را بخوانید. این دیالوگ، به شما امکان پیمایش فایلها موجود بر روی سیستم را میدهد. شما میتوانید نام یک فایل را در مسیر جاری یا اینکه مسیر کامل آن را در جعبه متنی که در جلوی متن File Name و پایین پنجره قرار دارد بنویسید.
در جدول زیر لیستی از خاصیتهای مهم این کنترل توضیح داده شده است:
خاصیت | توضیح | |
AddExtention | تعیین میکند که هنگامی که کاربر نام یک فایل بدون پسوند را تایپ میکند یک پسوند به طور خودکار به آن اضافه شود یا نه؟ | |
CheckFileExists | تعیین میکند زمانی که کاربر نام یک فایل را که وجود ندارد مینویسد یک پنجرهی اخطار به او نمایش داده شود یا نه؟ | |
CheckPathExists | تعیین میکند زمانی که کاربر مسیری که وجود ندارد را مینویسد یک پنجرهی اخطار به او نمایش داده شود یا نه؟ | |
DefaultExt | پسوند پیشفرض. زمانی که کاربر نام فایل را بدون پسوند بنویسد به طور خودکار به آخر فایل اضافه میشود. | |
FileName | فایلی که توسط کاربر انتخاب شده است. | |
FileNames | مجموعهای از فایلها که توسط کاربر انتخاب میشود. | |
Filter | با استفاده از این خاصیت میتوانید لیست فایلهایی (پسوندهایی) که کاربر میتواند انتخاب کند را مشخص کنید. | |
FilterIndex | اگر پسوندهای متفاوتی در دسترس باشد، با استفاده از این خصوصیت میتوانید تعیین کنید که کدام پسوند به طور پیشفرض هنگام باز شدن پنجره نمایش داده شود. | |
InitialDirectory | دایرکتوری پیشفرضی که هنگام نمایش پنجره در آن قرار داریم را تعیین میکند. | |
Multiselect | تعیین میکند که امکان انتخاب چندین فایل توسط کاربر وجود دارد یا نه؟ | |
Title | عنوان پنجره را تعیین میکند. |
خاصیت AddExtension تعیین میکند زمانی که کاربر پسوند فایل را نمینویسد، یک پسوند که در خاصیت DefaultExt مشخص شده است به آن اضافه کند یا نه؟ توصیه میشود که مقدار دو خاصیت CheckFileExists و CheckPathExists را برابر true قرار دهید تا زمانی که فایل یا مسیر مشخصی وجود ندارد، به کاربر اخطاری نمایش داده شود. خصوصیت InitialDirectory تعیین کننده پوشه پیشفرضی است که هنگام نمایش دیالوگ در آن قرار داریم. خصوصیت Title نمایانگر متنی است که در عنوان دیالوگ قرار دارد. خصوصیت FileName مسیر فایلی که کاربر توسط دیالوگ انتخاب کرده است را بر میگرداند. همچنین با استفاده از خاصیت MultiSelect امکان انتخاب چندین فایل در دیالوگ را میدهید. لیست فایلهای انتخاب شده در خصوصیت FileNames قرار میگیرد.
فیلتر کردن فایلها
شما میتوانید فقط فایلهایی که دارای نوع مشخصی هستند را در پنجره نمایش دهید. برای این کار باید یک الگو که یک رشته است را در خاصیت Filter مشخص کنید. به عنوان مثال، میتوانیم فقط فایلهایی که دارای پسوند .txt هستند را در پنجره نمایش دهیم. خاصیت Filter به یک الگوی خاص نیاز دارد.
Description1|FilterPattern1|Description2|FilterPattern2|...DescriptionN|FilterPatternN
ابتدا باید شرحی از نوع فایل را مشخص کنیم. سپس کاراکتر | و الگوی مشخصی را بعد از آن قرار میدهیم. به عنوان مثال الگوی زیر فقط لیست فایلهای متنی را نمایش میدهد.
Text Files|*.txt
شرح نوع فایل Text Files و الگوی آن *.txt است. کاراکتر * یک کاراکتر جایگزین است که بیانگر هر نامی است. قسمت .txt مشخص کننده یک پسوند خاص است. الگو تعیین میکند که فایلهای با پسوند .txt در پنجره نمایش داده شود. همچنین از کاراکترهای جایگزین برای بسیاری از هدفهای دیگر نیز استفاده کنید. به عنوان مثال، الگوی m*.txt تمامی فایلهای متنی که با حرف m شروع میشوند را تطبیق میدهد. یعنی فقط فایلهای متنی که اسمشان با حرف m شروع میشود را تشخیص میدهد. الگوی *r.txt تمامی فایلهای متنی که نام آنها به حرف r ختم میشود را تطبیق میدهد. الگوی *.* تمامی انواع فایلها را تطبیق میدهد. الگوی *.t* تمامی فایلهای که پسوند انها با حرف t شروع میشود را تطبیق میدهد. شما میتوانید چندین فیلتر را مشخص کنید. به عنوان مثال الگوی زیر متشکل از چندین فیلتر است.
Text Files|*.txt|Bitmap Files|*.bmp|All Files|*.*
در جلوی جعبه متنی که نام فایل را مینویسید، یک کامبو باکس وجود دارد که لیست فیلترهای مختلف در آن قرار دارد.
همچنین این امکان وجود دارد که برای چندین پسوند یک توضیح نوشته شود. به عنوان مثال، فایلهای تصویری دارای پسوندهای مختلفی از جمله bmp ،jpeg ،png هستند. شما به راحتی میتوانید پسوندهای مختلف را با سمیکالن از یکدیگر جدا کنید.
Image Files|*.bmp;*.jpeg;*.png;*.gif
هنگامی که این فیلتر را انتخاب میکنید تمامی فایلهایی که حداقل با یکی از الگوهای آن مطابقت داشته باشد، نشان داده میشود.
مثالی از کاربرد OpenFileDialog
در ادامه یک پروژه جدید از نوع Windows Application درست میکنیم، که از قابلیتهای پایهای کنترل OpenFileDialog استفاده میکند. کاربر با استفاده از برنامه یک فایل متنی را انتخاب میکند سپس برنامه محتوای آن فایل را در یک جعبه متن چند خطی نشان میدهد. ابتدا به این نکته توجه کنید که فضای نامی System.IO را به برنامه اضافه کنید.
using System.IO;
یک فرم به شکل زیر طراحی کنید. از جعبه متنی استفاده کنید که خاصیت MultiLine آن برابر true باشد. مقادیر خاصیتهای Scrollbars و WordWrap را به ترتیب برابر both و false تغییر دهید. یک کنترل OpenFileDialog را از جعبه ابزار بر روی فرم قرار دهید.
بر روی دکمه دو بار کلیک کنید تا کنترل کننده رویداد Click ایجاد شود. دوباره یادآوری میشود که فضای نامی System.IO را به لیست فضای نامی کلاس اضافه کنید. از کد زیر در داخل کنترل کننده رویداد استفاده کنید.
1: private void button1_Click(object sender, EventArgs e) 2: { 3: //فقط فایلهای متنی نمایش داده شوند 4: openFileDialog1.Filter = "Text Files|*.txt"; 5: //هیچ فایلی در ابتدا انتخاب نشود 6: openFileDialog1.FileName = String.Empty; 7: 8: //پنجرهای برای انتخاب فایل باز شود 9: DialogResult result = openFileDialog1.ShowDialog(); 10: 11: //کلیک شد Open اگر دکمه 12: if (result == DialogResult.OK) 13: { 14: //مسیر فایل انتخاب شده در یک متغیر ذخیره میشود 15: Stream fs = openFileDialog1.OpenFile(); 16: // فایل مسیر فایل خوانده میشود StreamReader با استفاده از 17: StreamReader reader = new StreamReader(fs); 18: //محتویات فایل خوانده میشود 19: textBox1.Text = reader.ReadToEnd(); 20: //Close the reader and the stream 21: reader.Close(); 22: } 23: }
در خط 4 با استفاده از خاصیت Filter یک فیلتر را اضافه میکنیم. با استفاده از الگوی آن مشخص میکنیم که در پنجره فقط لیست فایلهای متنی نمایان شود. در خط 6 به خاصیت FileName مقدار empty را نسبت میدهیم، تا در ابتدا هیچ فایلی انتخاب نشود. سپس با استفاده از متد ShowDialog() در خط 9 پنجره را نمایش میدهیم. این متد خروجی از نوع DialogResult دارد. هنگامی که کاربر یک فایل مجاز را انتخاب و بر روی دکمه Open کلیک میکنید خروجی متد برابر DialogResult.OK میشود (خط 12). با استفاده از دستور شرط خروجی متد را بررسی میکنیم. خروجی متد OpenFile() از کنترل OpenFileDialog را در یک شیء از نوع Stream ذخیره میکنیم. شیء Stream به فایل انتخاب شده ارجاع دارد، از این شیء در ساخت شی ای از کلاس StreamReader که کار خواندن از فایل را به عهده دارد استفاده میکنیم. با استفاده از متد ReadToEnd() کلاس StreamReader محتوای کامل فایل را خوانده و در خاصیت Text کنترل textBox1 نمایش میدهیم. برنامه را اجرا و بر روی دکمه کلیک کنید. یک فایل متنی را از پنجره نمایش داده شده انتخاب کنید. هنگامی که فایلی که مسیر آن توسط کاربر نوشته شده موجود نباشد، یک پیغام خطا به او نمایش داده میشود. فراموش نکنید که ابتدا خصوصیات CheckFileExists و CheckPathExists را برابر true قرار دهید. اگر فایل انتخاب شده موجود و مجاز باشد محتوای کامل آن در جعبه متنی قرار میگیرد.
سلام اگ همین رو بخوایم برای منوی میانبر( کلیک راست) بنویسیم باید چیکار کنیم
ممنون
سلام
من میخواهم یه ادرسی رو به openfiledialog بدم که بدون باز کردن پنجره اش فایل باز بشه.
مثلاً فایلم pdf هست.
سلام
سوالتونو تو بخش پرسش و پاسخ سایت، مطرح بفرمایید
سلام آیا راهی هست وقتی دکمه browse زده می شه یک فرم جای opendialog فراخوانی بشه
سلام ممنون میشم سوالتونو تو بخش پرسش و پاسخ سایت مطرح بفرمایید با تشکر
سلام خسته نباشید
اگر بخایم هر فایلی باشه و توی تکست یاکس نشونش نده مثلا اگر پی دی افه با آکروبات باز بشه اگه عکسه با ویندوز فوتو ویور نشون بده و ….باید چیکار کنیم ؟
ممنون
سلام ، مرسی ، می تونید از کد زیر استفاده کنید :
سلام.ممنون از راهنماییتون.من یه کم گیج شدم…من یه توضیح میدم.من یه opendialog گذاشتم با یه دکمه (مثلا اپن).میخام این دکمه رو که زدم و فایلم که از هر نوعی هست رو انتخاب کردم .بیاد این فایل رو در یه مسیر دیگه روی هارد (که این مسیر ثابته برای همه فایل ها وفقط اسم فایله که عوض میشه) کپی کنه یا ذخیره کنه .بعد هر چندتا فایل که خاستم باز کنم و در همین مسیر ذخیره کنم که نام این فایل ها در یک کمبو باکس قابل رویت باشه .حالا روی هر نام فایلی که در کمبو انتخاب کردم و دکمه مثلا view را زدم با این دستور System.Diagnostics.Process.Start(ofd.FileName); فایل رو برام باز کنه .
شرمنده
ممنون میشم اگه کمک کنید
سلام، خواهش می کنم، همین سوالتونو رو کپی و در بخش پرسش و پاسخ مطرح بفرمایید.
با تشکر
سلام خسته نباشید میشه ارسال دریافت فایل در محیط سی شارپ رو بگین ممنون میشم.
سلام دستتون درد نکنه اگه امکان داره کار با بانک اطلاعاتی را نبز توضیح بدین .
سلام …بخش ADO در مورد بانک و ارتباط با اونه