کنترل SaveFileDialog
کنترل System.Windows.Forms.SaveFileDialog به شما اجازه میدهد که یک فایل را ذخیره یا متنی را در یک فایل بنویسید. این کنترل همچنین به شما اجازه میدهد که در بین پوشههای موجود در سیستم خود یک پوشه را انتخاب کرده، سپس نام فایلی که قصد دارید اطلاعاتی را در آن قرار دهید را بنویسید. زمانی که نام فایلی که در پوشه جاری پنجره قرار دارد را بنویسید، یک پیغام خطا نمایش داده میشود، مبنی بر اینکه اطلاعات موجود در فایل دوباره نویسی میشود (overwrite). همچنین میتوانید مسیر کامل فایل را در داخل جعبه متنی که در قسمت پایین آن قرار دارد بنویسید.
در زیر تعدادی از خاصیتهای مفید این کنترل را مشاهده میکنید:
خاصیت | توضیح | |
AddExtention | تعیین میکند که هنگامی که کاربر نام یک فایل بدون پسوند را تایپ میکند یک پسوند به طور خودکار به ان اضافه شود یا نه؟ | |
CheckFileExists | تعیین میکند زمانی که کاربر نام یک فایل را که وجود ندارد مینویسد یک پنجرهی اخطار به او نمایش داده شود یا نه؟ | |
CheckPathExists | تعیین میکند زمانی که کاربر مسیری که وجود ندارد را مینویسد یک پنجرهی اخطار به او نمایش داده شود یا نه؟ | |
DefaultExt | پسوند پیشفرض. زمانی که کاربر نام فایل را بدون پسوند بنویسد به طور خودکار به نام فایل اضافه میشود. | |
FileName | فایلی که توسط کاربر انتخاب شده است. | |
Filter | با استفاده از این خاصیت میتوانید لیست فایلهای داخل پنجره را فیلتر کنید. | |
FilterIndex | اگر فیلترهای متفاوتی در دسترس باشد، با استفاده از این خصوصیت میتوانید تعیین کنید که کدام فیلتر به پنجره اعمال شود. | |
InitialDirectory | دایرکتوری پیشفرضی که هنگام نمایش پنجره در آن قرار داریم را تعیین میکند. | |
OverwritePrompt | زمانی که فایل مورد نظر شما در پنجره موجود باشد یک پیغام به شما نمایش داده میشود. | |
Title | عنوان پنجره |
خاصیت AddExtension به طور خودکار زمانی که کاربر فایل بدون پسوندی را بنویسد، پسوندی که در خاصیت DefaultExt قرار دارد را به آن اضافه میکند. توصیه میشود که مقدار دو خاصیت CheckFileExists و CheckPathExists را برابر true قرار دهید تا زمانی که فایل یا مسیر مشخصی وجود ندارد، به کاربر اخطاری نمایش داده شود. خصوصیت InitialDirectory تعیین کننده پوشه پیشفرضی است که هنگام نمایش دیالوگ در آن قرار داریم. خصوصیت Title نمایانگر متنی است که در عنوان دیالوگ قرار دارد.
مشخص کردن نوع فایل
میتوان نوع فایل را تعیین کرد. برای این کار از خاصیت Filter استفاده میشود. این خاصیت یک رشته حاوی الگوی خاص را به عنوان مقدار میپذیرد. به عنوان مثال، تعیین میکنیم که فایلی که قصد ذخیره آن را داریم از نوع متنی میباشد. خاصیت Filter باید دارای یک الگوی خاص باشد.
Description1|Extension1|Description2|Extention2|...DescriptionN|ExtentionN
ابتدا برای نوع فایل یک توضیح مینویسیم. در ادامه یک کاراکتر | و سپس نوع فایل را مینویسیم. به عنوان مثال الگوی زیر به شما اجازه میدهد که فایل را فقط به صورت متنی ذخیره کنید.
Text Files|.txt
شرح فایل در مثال بالا برابر Text Files و پسوند آن برابر txt. است. این امکان وجود دارد که چندین پسوند را مشخص کنید. به عنوان نمونه الگوی زیر به شما اجازه میدهد که یک فایل را به متنی با پسوند txt. با به صورت تصویری با پسوند png. ذخیره کنید.
Text Files|*.txt|Image|*.png
نوع فایل را از کامبو باکسی که در زیر جعبه متن نام فایل قرار دارد انتخاب میکنید.
یک مثال از کاربرد کنترل SaveFileDialog
اجازه دهید یک برنامه نمونه که در آن از قابلیتهای کنترل SaveFileDialog استفاده شده است را طراحی کنیم. برنامه به کاربر اجازه میدهد که محتوای یک جعبه متن چند خطی را در یک فایل متنی که به وسیله این کنترل انتخاب میشود قرار دهد. ابتدا توجه کنید که کد زیر را به لیست فضای نامیهای کلاس اضافه کنید.
using System.IO;
یک فرم شبیه فرم زیر طراحی کنید. از جعبه متنی که خاصیت mutiline آن برابر true است استفاده کنید. یک کنترل SaveFileDialog را از قسمت Dialogs جعبه ابزار بر روی بکشید.
بر روی دکمه دوبار کلیک کنید، تا کنترل کننده رویداد کلیک آن ایجاد شود. به شکل زیر کدهای مشابه را در کنترل کننده رویداد قرار دهید.
1: private void button1_Click(object sender, EventArgs e) 2: { 3: //Specify the extensions allowed 4: saveFileDialog1.Filter = "Text files (*.txt)|*.txt"; 5: //Empty the FileName text box of the dialog 6: saveFileDialog1.FileName = String.Empty; 7: //Set default extension as .txt 8: saveFileDialog1.DefaultExt = ".txt"; 9: 10: //Open the dialog and determine which button was pressed 11: DialogResult result = saveFileDialog1.ShowDialog(); 12: 13: //If the user presses the Save button 14: if (result == DialogResult.OK) 15: { 16: //Create a file stream using the file name 17: FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create); 18: 19: //Create a writer that will write to the stream 20: StreamWriter writer = new StreamWriter(fs); 21: //Write the contents of the text box to the stream 22: writer.Write(textBox1.Text); 23: //Close the writer and the stream 24: writer.Close(); 25: } 26: }
خط 4 تعیین میکند که کاربرد فقط میتواند محتوای جعبه متنی را در یک فایل متنی قرار دهد. خط 6 مقدار empty را به خصوصیت FileName نسبت میدهد تا در زمان نمایش هیچ فایلی به طور پیشفرض انتخاب نشود. مقدار خاصیت DefaultExt را برابر txt. قرار دادهایم تا اگر کاربر پسوند فایل مورد نظر خود را فراموش کند برنامه به طور خودکار این پسوند را به انتهای نام فایل اضافه کند. سپس با استفاده از متد ()ShowDialog پنجره را نمایش میدهیم. خروجی این متد از نوع DialogResult است.
هنگامی که کاربر بر روی دکمه Save کلیک میکند خروجی متد برابر DialogResult.OK میشود (خط 14). با استفاده از دستور if خروجی متد را بررسی میکنیم، اگر کاربر بر روی OK کلیک کرد سپس در خط 17 یک شیء از کلاس FileStream ساخته و خاصیتهای FileName و FileMode آنرا تنظیم کردهایم. این خط در اصل مسئول ایجاد یک فایل متنی با نامی است که ما در کادر FileName پنجره saveFileDialog مشخص کردهایم. سپس یک شیء از کلاس StreamWriter ساخته و شیء FileStream قبلی را به آن انتقال میدهیم. با این کار به برنامه می گوییم که قرار است در فلان فایل عمل نوشتن صورت بگیرد.
با استفاده از متد ()Write متن موجود در جعبه متن را در استریم یا همان فایلی که ایجاد کردهایم نوشته و سپس با استفاده از متد ()Close استریم را میبندیم. برنامه را اجرا و متنی را داخل جعبه متن بنویسید. بر روی دکمه کلیک کنید و یک پوشه را انتخاب کنید. سپس نام یک فایل را بنویسید و بر روی دکمه Save پنجره کلیک کنید. اگر فایلی با همان نام نوشته شده توسط شما موجود باشد یک پیغام به شما نمایش داده میشود. در صورت تأیید پیغام، محتوای آن فایل کاملاً حذف و محتوای جدید به جای آن قرار میگیرد. اگر مقدار خاصیت OverwritePrmpt را برابر false قرار دهید پیغام خطا نمایش داده نمیشود .
سلام وقت بخیر . خوب هستید . چکار کنم تمام فایل ها از جمله فایل pdf به dataGridView ذخیره شود dataSet1 در آخر dataGridView نمایش بدهد
سلام، این نمونه است که براتون نوشتم
خیلی ممنون از سایت خوبتون تونستم فایلی رو که نوشته بود رو سیو کنم-با تشکر
سلام.
من یک برنامه ای منویسم که نیاز دارم وقتی کاربر در آن تغییراتی ایجاد می کنه ذخیره شه.
ولی همان طور که خودتان می دانید هنگامی که از برنامه خارج شوید برنامه ریست می شود
من یک فرد مبتدی هستم که سه چهار ماه هست که وارد این کار شدم و با بعضی منو های ویژوال استودیو آشنا نیستم.
اگه ممکنه منو راهنمایی کنید خیلی ممنونم
سلام، شما باید مطالب سایت رو تا آخر بخونید
این چیزی که میخواین کار با بانک اطلاعاتیه و باید به اون قسمت ها هم برسین که متوجه بشین چطور اطلاعات رو تو دیتابیس ذخیره کنید که ریست نشن.
توصی میکنم، چون الان اول راه هستین از ویدئوهای آموزشی شروع کنید. خیلی خیلی سریعتر و راحت تر به اون چیزی که میخواین میرسین