PDA

View Full Version : سوال: اجرای تابع قبل از Form_Load



ozzy_mra
دوشنبه 06 شهریور 1391, 11:12 صبح
سلام
من یه تابع دارم که وجود یه سری فایل رو کنترل می کنه که اگر نبود یا قدیمی تر بودند از یه جای مشخصی اونا رو تو برنامه کپی میکنه
تو فرم لودم یه سری کار با این اطلاعات انجام میدم و در نتیجه احتیاج دارم کنترل وجود فایل رو قبل از لود انجام بدم، فرم متدی برای این کار داره؟

hakim22
دوشنبه 06 شهریور 1391, 12:02 عصر
در C# باید به properties پروژه برید.
از قسمت Application به اون پایین گزینه ی View Application events بروید.
بعد یک فایل cs تو پروژه اضافه میشه.
درون اون فایل چند event هست. گزینه ی Startup رو پیدا کنید.
این رویداد قبل از ساخته شدن هر فرمی اجرا میشه

ozzy_mra
دوشنبه 06 شهریور 1391, 12:27 عصر
در C# باید به properties پروژه برید.
از قسمت Application به اون پایین گزینه ی View Application events بروید.
بعد یک فایل cs تو پروژه اضافه میشه.
درون اون فایل چند event هست. گزینه ی Startup رو پیدا کنید.
این رویداد قبل از ساخته شدن هر فرمی اجرا میشه
ممنون ولی view application Events رو پیدا نکردم

hakim22
دوشنبه 06 شهریور 1391, 13:33 عصر
در C# شما به فایل Program.cs بروید ( توضیحاتی که دادم مربوط به VB میشه)
در قسمت MAIN خودتون متوجه میشوید.

abdullah20
دوشنبه 06 شهریور 1391, 15:51 عصر
واقعا بعضی مواقع یه سوالاتی پرسیده میشه و جالب تر از اون یه جوابهایی هم داده میشه که . . . . .
خوب عزیز باید تابع را در Constructor فرم صدا بزنید دیگه

hakim22
سه شنبه 07 شهریور 1391, 07:52 صبح
فرض ما اینه که ایشون قبل از اجرای اولین فرم برنامه میخوان که یک سری متد رو اجرا کنند.
چه جوری صدا بزنیم !؟
بگیم هی Constructor بیا !!؟

تابع Main در فایل Program.cs نقطه ی شروع هر برنامه ای در C# است.
در واقع از همونجاست که Constructor فرم اصلی برنامه اجرا میشه ( صداش میزنن!)

HamidNch
سه شنبه 07 شهریور 1391, 10:26 صبح
فکر میکنم تابع OnPreRender رو تحریف(Override) کنید بهتره.چون قبل از Form_Load اجرا میشه.

h_assefi
سه شنبه 07 شهریور 1391, 11:18 صبح
این دو تا لینک زیر دقیقا براتون مشخص کرده که اولویت رخداد رویدادها کدومه
http://www.daveoncsharp.com/2009/06/windows-forms-event-sequence/
http://social.msdn.microsoft.com/forums/en-US/winforms/thread/69b8c88d-15a7-410b-ab6e-fcdfde719553

ozzy_mra
سه شنبه 07 شهریور 1391, 11:51 صبح
واقعا بعضی مواقع یه سوالاتی پرسیده میشه و جالب تر از اون یه جوابهایی هم داده میشه که . . . . .
خوب عزیز باید تابع را در Constructor فرم صدا بزنید دیگه

دوست گرامی من دقیقاً می خوام تو مرحله application start کدم رو اجرا کنم

ozzy_mra
سه شنبه 07 شهریور 1391, 11:55 صبح
فرض ما اینه که ایشون قبل از اجرای اولین فرم برنامه میخوان که یک سری متد رو اجرا کنند.
چه جوری صدا بزنیم !؟
بگیم هی Constructor بیا !!؟

تابع Main در فایل Program.cs نقطه ی شروع هر برنامه ای در C# است.
در واقع از همونجاست که Constructor فرم اصلی برنامه اجرا میشه ( صداش میزنن!)

مشکل من اینه که تو اینجا من می خوام یه پروگرس هم به کاربرم نشون بدم چون کپی بیش از 2 دقیقه طول می کشه. از Backgroundworker نتونستن استفاده کنم، منطقی هم به نظر نمیرسه چون فرم رو لود میکنه و من نمی خوام قبل از اینکه فایلها کپی بشه فرم لود بشه ، راه دیگه ای هم به نظرم نرسید مجبور شدم کارهام رو تو Form_Load انجام بدم و کپی رو داخل یه Backgroundworker بندازم ولی فرم پروگرس رو showDialog کنم که تو اتمام کار کپی می بندمش و فرم اصلی نمایش داده میشه

hakim22
سه شنبه 07 شهریور 1391, 17:00 عصر
درسته که اینها چیزی جز متوای دیجیتالی نیستند اما فرمها هم یک چیز مادی هستند و از قوانین فیزیک و ماده پیروی می کنند :
شما هم میخواهید فرم نمایش داده نشه چون اطلاعات توش اول باید لود بشه ، بعد می خواهید توی همون فرم عمل بارگذاری رو با پروگرس نشون بدید.
دو تا فرمش کنید. یکی Splash باشه و دیگری فرم جاری !