نمایش نتایج 1 تا 3 از 3

نام تاپیک: تنطیم فونت کل فرم های برنامه توسط کاربر

  1. #1
    کاربر دائمی آواتار hamid.shekasteh
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شیراز
    پست
    192

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

    توی سایت چندین جا دیدم که افراد در مورد فونت خوب و کاربر پسند بحث کرده بودند ، خوبه انتخاب فونت رو به کاربر بسپاریم.
    از اساتید می خواهم اگه مشکلی توی کد ها دیدند یا نظری داشتند حتما بنویسند.
    من از روش زیر استفاده می کنم:
    اول باید در قسمت Setting برنامه یه متغیر از نوع فونت با نام Font تعیین کنید:

    برای این کار از مسیر زیر پنجره Settings.settings را باز کنید:
    ProjectName>Properties>Settings.settings
    حالا در بخش Name نام Font و در بخش Type ، System.Drawing.Font و در بخش Scope مورد User را انتخاب کنید.در قسمت Value نیز فونت پیشفرض را انتخاب کنید.


    حالا یک کلاس تعریف می کنیم تا در تمام فرم ها از آن استفاده کنیم:
    تابع را به صورت static تعریف می کنیم:

    static public void SetFont(Form form)
    {
    System.Drawing.Font font = Properties.Settings.Default.Font;
    foreach (Control Obj in form.Controls)
    {
    try
    {
    if (Obj.HasChildren)
    foreach (Control Child in Obj.Controls)
    try
    {
    Child.Font = font;
    }
    catch { }



    Obj.Font = font;
    }
    catch { }

    }
    }


    اگر فونت اشیا وابسته به والدشان باشد (پیش فرض دات نت)و شما تغییری نداده باشید حلقه زیر هم مانند بالا عمل می کند:

    foreach (Control Obj in form.Controls)
    {
    try
    {


    Obj.Font = font;
    }
    catch { }
    }


    اشیایی که خاصیت Font را ندارند در catch می افتند.
    حال برای تنظیم فونت هر کد می بایست در سازنده فرم خط زیر را اضافه نمایید:


    حال برای تنظیم فونت هر کد می بایست در رویداد Paint فرم کدی مانند زیر را بنویسید:

    private void frmMain_Paint(object sender, PaintEventArgs e)
    {
    Manager.SetFont(this);
    }


    اما کد دکمه تنظیم فونت توسط کاربر :

    privatevoid btnFont_Click(object sender, EventArgs e)
    {
    if (fontDialog1.ShowDialog() == DialogResult.OK)
    {
    if (fontDialog1.Font.Size < 8 || fontDialog1.Font.Size > 12)
    MessageBox.Show("اندازه فونت می بایست در محدوده 8 تا 12 باشد");
    else
    {
    Properties.Settings.Default.Font = fontDialog1.Font;
    Manager.SetFont(this); //SettingForm
    }
    }
    Properties.Settings.Default.Save();
    }


    آخرین ویرایش به وسیله hamid.shekasteh : چهارشنبه 01 مهر 1388 در 22:06 عصر

  2. #2
    کاربر دائمی آواتار hamidinejad
    تاریخ عضویت
    اسفند 1385
    محل زندگی
    Arak_City
    پست
    122

    نقل قول: تنطیم فونت کل فرم های برنامه توسط کاربر

    اگه این کار رو انجام بهیم یکسری از فونت های غیر استاندارد هم از روی سیستم توسط کاربر انتخاب میشه که مناسب نیست آیا راهی هست که کاربر را محدو به انتخاب مثلا 20 فونت خودمان کنیم؟

  3. #3
    کاربر دائمی آواتار hamid.shekasteh
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    شیراز
    پست
    192

    نقل قول: تنطیم فونت کل فرم های برنامه توسط کاربر

    بله، چرا که نه اما قبل از توضیح بگم که با عرض معذرت من یه قسمت از آخر متن رو جا انداختم که الان دیگه درست شده است.

    شما می تونید همون جایی که من اندازه فونت رو چک کردم با خاصیت فقط خواندنی زیر نوع فونت را پیدا کنید و با یک if کار مورد نظرتون رو انجام بدین.
    fontDialog1.Font.FontFamily
    یا حق

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •