استفاده از فایل تنظیمات (Settings.settings)

به عنوان یک برنامه نویس، ممکن است خیلی اوقات لازم داشته باشید که تنظیمات برنامه تان را در یک فایل متنی، ini و یا یک فایل xml ذخیره کنید. انجام این کار در دات نت با استفاده از فایل تنظیمات (Settings file) مقدور و بسیار آسان است. این فایل در حالت پیشفرض وجود دارد و همانطور که در شکل زیر مشاهده می کنید در Solution Explorer قابل مشاهده است. نام پیشفرض این فایل Settings.settings می باشد و دارای یک ظاهر ساده برای اعمال تنظیمات برنامه است. بای مشاهده ظاهر این فایل بر روی نام آن دوبار کلیک کنید :
Setting-File-C#-01

Setting-File-C#-02

 

خواص فایل تنظیمات

همانطور که در شکل بالا مشهده می کنید، یک فایل تنظیمات دارای خواص زیر می باشد :

خاصیت توضیحات
Name این خاصیت نامی است که به وسیله آن می توان به مقدار تنظیمات از طریق کدنویسی دست یافت.
Type نوع تنظیمات را نشان می دهد. مانند bool، decimal و حتی انواع پیشرفته مانند System.Drawing.Color
Scope این خاصیت چگونگی در دسترس بودن یک تنظیم را مشخص می کند و می تواند دارای یکی از دو مقدار User یا Application باشد. مهمترین تفاوت این دو مقدار این است که Application فقط خواندنی هستند در حالیکه User نه. تنظیمات User برای بارگذاری و ذخیره تنظیمات اعمال شده توسط کاربر مانند تنظیمات رنگ و موقعیت پنجره ها به کار می روند. تنظیمات Application برای ذخیره تنظیمات لازم برای اجرای برنامه شما مانند تنظیم connection string به کار می روند.
Value این خاصیت همان مقدار واقعی است که هنگام دسترسی به یک تنظیم برگشت داده می شود.

 

ایجاد یک فایل تنظیم

می خواهیم یک فایل تنظیم با سه خاصیت TextColor ، width و Height ایجاد کنیم. فایل Settings.settings را باز کرده و سه خاصیت به صورت زیر به آن اضافه کنید :
Setting-File-C#-03
محدوده خاصیت TextColor را به User تغییر می دهیم، بنابراین می توانیم از طریق کدنویسی مقدار این خاصیت را تغییر دهیم. دو خاصیت دیگر فقط – خواندنی هستند.

 

استفاده از فایل تنظیمات در کدنویسی

یک فرم ساده مانند شکل زیر با دو دکمه و یک Label ایجاد می کنیم :
Setting-File-C#-04
در رویداد Click دکمه تغیر اندازه پنجره (Resize Window) کدهای زیر را برای خواندن تنظیمات عرض و ارتفاع می نویسیم :

private void button1_Click(object sender, EventArgs e)
{
    this.Width = Properties.Settings.Default.Width;
    this.Height = Properties.Settings.Default.Height;
}

حال در رویداد Click دکمه Change & Save Colour کدهای زیر را برای تغییر رنگ متن کنترل Label با استفاده از خاصیت TextColor فایل تنظیمات می نویسیم. همانطور که مشاهده کردید ما این رنگ را قرمز انتخاب کردیم ولی چون مقدار scope آن را برابر User قرار داده ایم، می توانیم آن را تغییر دهیم. فرض کنید می خواهیم رنگ آبی را به متن اعمال کنیم :

private void button2_Click(object sender, EventArgs e)
{
    label1.ForeColor = Properties.Settings.Default.TextColor;         
    Properties.Settings.Default.TextColor = Color.Blue;
    Properties.Settings.Default.Save();
}

اگر برنامه را اجرا کنید و بر روی هر کدام از دکمه ها یک بار کلیک کنید متوجه عملکرد آنها می شوید :
Setting-File-C#-05
همانطور که مشاهده می کنید تنظیماتی که در فایل تنظیمات به کار بردیم با کلیک بر روی دکمه ها بر روی برنامه اعمال می شوند.

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر و اگر سوالی دارید در بخش پرسش و پاسخ مطرح بفرمایید.

  1. amir پاسخ دادن

    سلام

    ممنون از سایت خوبتون خیلی عالی بود

    تشکر

    عیدتونم مبارک باشه …

    • یونس ابراهیمی پاسخ دادن

      سلام،ممنون ، همچنین

  2. C# پاسخ دادن

    سلام
    قبل از هرچیز ممنون از سایت خوبتون.
    من وقتی که از قسمت setting ها connection string میسازم Scope با مقدار application ست میشه اما من می خوام داخل برنامه از طریق یک فرم مقادیر جدید connection string رو وارد کنم بعد در این setting ذخیره بشه چون درآینده ممکنه آدرس پایگاه داده تغییر کنه.
    از Entity Framework استفاده میکنم.

    • یونس ابراهیمی پاسخ دادن

      سلام دوست عزیز…ممنون از لطفتون
      ممنون میشم سواتونو توی بخش پرسش و پاسخ مطرح بفرمایید.
      با تشکر

  3. شش پاسخ دادن

    چطوری تو لیست باکس همین کارو بکنم

    • یونس ابراهیمی پاسخ دادن

      ممنون میشم سوالتونو توی انجمن مطرح بفرمایید.

  4. armeshi پاسخ دادن

    سلام و تشکر از این سایت شسته و رفتتون
    خواستم سوال کنم که اگه چند تا فرم داشتیم و کاربرخواست همشونو با هم تغییر بده باید چکار کنیم؟
    ممنونم

    • یونس ابراهیمی پاسخ دادن

      سلام،ممنون بابت لطفتون
      ممنون میشم سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید.

  5. daniel پاسخ دادن

    با سلام خدمت شما
    من چند تا رشته درون لیست باکس ثبت کردم ولی نمیدونم چطوری انها را با setting ذخیره کنم
    ممنون میشم اگه کمکم کنید
    با تشکر از سایت شما

    • یونس ابراهیمی پاسخ دادن

      سلام، ممنون میشم سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید
      با تشکر