آموزش کنترل Open File Dialog


 آموزش کنترل Open File Dialog

کنترل 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|*.*

در جلوی جعبه متنی که نام فایل را می نویسید یک کامبو باکس وجود دارد که لیست فیلتر های مختلف در آن قرار دارد.
file-open-dialog-01
همچنین این امکان وجود دارد که برای چندین پسوند یک توضیح نوشته شود. به عنوان مثال، فایل های تصویری دارای پسوند های مختلفی از جمله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 را ازجعبه ابزار بر روی فرم قرار دهید.
file-open-dialog-02
بر روی دکمه دو بار کلیک کنید تا کنترل کننده رویداد 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 قرار دهید. اگر فایل انتخاب شده موجود و مجاز باشد محتوای کامل آن در جعبه متنی قرار می گیرد.