What Is Program.Cs ?
سلام دوستان.
توی این پست میخوام توضیحاتی درمورد Program.Cs در پروژه بدم.
Program.Cs چیه ؟
Program.Cs یک کلاس هست که تابع Main برنامه اونجا قرار داده شده.
کد PHP:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
همونطور که میدونید اولین تابعی که توی برنامه اجرا میشه تابع Main هست که توی Program.Cs تعریف شده.
میرسیم به اولین خط :
کد PHP:
Application.EnableVisualStyles();
به صورت خیلی ساده Visual Style های برنامه رو فعال میکنه !
سوال :
Visual Style چیه ؟
بزارین توی عکس نشون بدم :
کد PHP:
Application.EnableVisualStyles();
کد PHP:
//Application.EnableVisualStyles();
خب فرقشو کاملا متوجه میشیم !
خب میریم سراغ خط دوم ! :
کد PHP:
Application.SetCompatibleTextRenderingDefault(false);
خب تابع این کد اینه :
کد PHP:
public static void SetCompatibleTextRenderingDefault(
bool defaultValue
)
کارش چیه ؟
در دات نت فریمورک 1.0 و 1.1 برنامه های ویندوز فرم ,متن خودشونو با استفاده از کلاس Graphics که در GDI + graphics واقع شده بود رو کنترل میکردند. این GDI + مبتنی بر graphics مشکلاتی در مسائل مربوط به performance (عملکرد) و localization(محلی سازی) بود.
در دات نت فریمورک 2.0 به بعد کلاس TextRender تعریف شد که مبتنی بر کتابخونه ی GDI graphics بود که غلبه میکرد بر مشکلات GDI + . همچنین متن ها در GDI وضعشون بهتر شد و فونت های بیشتری رو ساپورت میکردند.
محاسبه ی فاصله ی بین نوشته ها , قرار دادن کلمه ها و... در GDI و GDI + تفاوت قابل توجهی کردند.
خب حالا این همه قصه گفتم که ( :دی ! ) :
به طور پیشفرض خصوصیت UseCompatibleTextRendering مقدار false رو داره .اما در یک windows form application که از کلاس Graphics برای نمایش متن استفاده میکنه و داشتن کنترل خاصی که از کلاس TextRender برای نمایش متن ( که با application های دیگه فرق میکنه ) استفاده میکه , برای غلبه بر این ناسازگاری میتونین از UseCompatibleTextRendering رو مقدارشو true کنید ... در غیر اینصورت نیازی به تغییر در صدا زدن نیست !
خب آخرین خط ! :
کد PHP:
Application.Run(new Form1());
تابعش اینه :
کد PHP:
public static void Run(
Form mainForm
)
فرم مشخص شده رو نمایش میده ! یعنی انگار برنامه رو ارجاع میده به form.designer.cs !
اگر یکم دقت کنید یک خط میبینیم در بالا ! :
کد PHP:
[STAThread]
این چیه ؟!
STA = Single Thread Apartment
توضیح در این مورد خیلی خیلی زیاده ! من فقط یک خط میگم ! :
حمل کننده ی COM یعنی Component Object Model مایکروسافت ! ساختار و تعامل اجزای برنامه ! دقیقا مثل ستون فقرات ! AvtiveX , OLE و بقیه ی لایه های انتزاعی نرم افزار !
برای اطلاعات بیشتر هم میتونید از گوگل کمک بگیرید !
خب امیدوارم که این جلسه مفید بوده باشه !
موفق و پیروز باشید