کنترل 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 را به لیست فضای نامی کلاس اضافه کنید. از کد زیر در داخل کنترل کننده رویداد استفاده کنید.
private void button1_Click(object sender, EventArgs e) { //Filter to only text files openFileDialog1.Filter = "Text Files|*.txt"; //No initial file selected openFileDialog1.FileName = String.Empty; //Open file dialog and store the returned value DialogResult result = openFileDialog1.ShowDialog(); //If Open Button was pressed if (result == DialogResult.OK) { //Create a stream which points to the file Stream fs = openFileDialog1.OpenFile(); //Create a reader using the stream StreamReader reader = new StreamReader(fs); //Read Contents textBox1.Text = reader.ReadToEnd(); //Close the reader and the stream reader.Close(); } }
در خط اول با استفاده از خاصیت Filterیک فیلتر را اضافه می کنیم. با استفاده از الگوی آن مشخص می کنیم که در پنجره فقط لیست فایل های متنی نمایان شود. در خط دوم به خاصیت FileName مقدار empty را نسبت می دهیم تا در ابتدا هیچ فایلی انتخاب نشود. سپس با استفاده از متدShowDialog() پنجره را نمایش می دهیم.این متد خروجی از نوع DialogResult دارد. هنگامی که کاربر یک فایل مجاز را انتخاب و بر روی دکمهOpen کلیک می کنید خروجی متد برابر DialogResult.OK می شود. با استفاده از دستور شرط خروجی متد را بررسی می کنیم. خروجی متدOpenFile() از کنترل OpenFileDialog را در یک شی از نوع Stream ذخیره می کنیم. شی Stream به فایل انتخاب شده ارجاع دارد ، از این شی در ساخت شی ای از کلاس StreamReader که کار خواندن از فایل را به عهده دارد استفاده می کنیم. با استفاده از متد ReadToEnd کلاسStreamReader محتوای کامل فایل را خوانده و در خاصیت Text کنترل textBox1 نمایش می دهیم. برنامه را اجرا و بر روی دکمه کلیک کنید. یک فایل متنی را از پنجره نمایش داده شده انتخاب کنید. هنگامی که فایلی که مسیر آن توسط کاربر نوشته شده موجود نباشد، یک پیغام خطا به او نمایش داده می شود.فراموش نکنید که ابتدا خصوصیات CheckFileExists و CheckPathExists را برابر true قرار دهید. اگر فایل انتخاب شده موجود و مجاز باشد محتوای کامل آن در جعبه متنی قرار می گیرد.