PDA

View Full Version : آموزش: تنطیم فونت کل فرم های برنامه توسط کاربر



hamid.shekasteh
چهارشنبه 01 مهر 1388, 15:29 عصر
توی سایت چندین جا دیدم که افراد در مورد فونت خوب و کاربر پسند بحث کرده بودند ، خوبه انتخاب فونت رو به کاربر بسپاریم.
از اساتید می خواهم اگه مشکلی توی کد ها دیدند یا نظری داشتند حتما بنویسند.
من از روش زیر استفاده می کنم:
اول باید در قسمت 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);

}




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




private void 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();

}

hamidinejad
چهارشنبه 01 مهر 1388, 16:51 عصر
اگه این کار رو انجام بهیم یکسری از فونت های غیر استاندارد هم از روی سیستم توسط کاربر انتخاب میشه که مناسب نیست آیا راهی هست که کاربر را محدو به انتخاب مثلا 20 فونت خودمان کنیم؟

hamid.shekasteh
چهارشنبه 01 مهر 1388, 22:15 عصر
بله، چرا که نه اما قبل از توضیح بگم که با عرض معذرت من یه قسمت از آخر متن رو جا انداختم که الان دیگه درست شده است.

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

fontDialog1.Font.FontFamily

یا حق