PDA

View Full Version : Error در splash screen



ArenaSmi
سه شنبه 27 بهمن 1388, 18:27 عصر
سلام من يه splash screen با اين كد نوشتم
البته با سرچ در سايت!!

splashForm = new SplashForm();
splashForm.Show();
Form1 mainForm = new Form1();
splashForm.Refresh();

Application.Run(mainForm);

رویداد Form_Load فرم Form1 را دریافت کرده و در اولین خط آن عبارت

کد:
Program.splashForm.Refresh();
و در آخرین خط این متد دستور

کد:
Program.splashForm.Close();


ولي وقتي اجرا ميشه Error Null Exception reference رو ميده
و splash خيلي زود ناپديد ميشه
از راهنماييتون ممنون ميشم

SMRAH1
سه شنبه 27 بهمن 1388, 18:44 عصر
سلام
دقیقا توی کدوم خط این خطا را میده؟
در ضمن اگر کد کامل (فایل zip شده برنامه) رو بگذارید،بهتر میشه راهنمایی کرد.
موفق باشید

ArenaSmi
سه شنبه 27 بهمن 1388, 21:57 عصر
سلام
دقیقا توی کدوم خط این خطا را میده؟
در ضمن اگر کد کامل (فایل zip شده برنامه) رو بگذارید،بهتر میشه راهنمایی کرد.
موفق باشید

Program.sp.Refresh();
چه جوري ميتونم بهش زمان بدم كه مثلا 5 ثانيه رو صفحه بمونه بعد بسته شه؟
خيلي ممنون

SMRAH1
چهارشنبه 28 بهمن 1388, 11:27 صبح
سلام
1) احتمالا متغیر sp که در اینجا به کار برده اید،همون متغیر splashForm مورد استفاده دز Program نیست (کد را بگذارید،بهتر میشه نظر داد).
2) در اخرین خط Form_LOad فرم اصلی،قبل از دستور

Program.splashForm.Close();
دستور

Thread.Sleep(5 * 1000);
را به کار ببرید
موفق باشید

ArenaSmi
چهارشنبه 28 بهمن 1388, 15:21 عصر
سلام
1) احتمالا متغیر sp که در اینجا به کار برده اید،همون متغیر splashForm مورد استفاده دز Program نیست (کد را بگذارید،بهتر میشه نظر داد).
2) در اخرین خط Form_LOad فرم اصلی،قبل از دستور

Program.splashForm.Close();
دستور

Thread.Sleep(5 * 1000);
را به کار ببرید
موفق باشید

باشه حتما ميذارم ممنون از راهنماييتون
در ضمن يه سوال ديگه در مورد ساخت Autorun مطرح كرده بودم شما ميتونيد كمكم كنيد؟
مرسي

ArenaSmi
چهارشنبه 28 بهمن 1388, 20:14 عصر
سلام
دقیقا توی کدوم خط این خطا را میده؟
در ضمن اگر کد کامل (فایل zip شده برنامه) رو بگذارید،بهتر میشه راهنمایی کرد.
موفق باشید

فايل رو ضميمه كردم
مرسي

SMRAH1
پنج شنبه 29 بهمن 1388, 11:10 صبح
سلام
توی خط 21 کلاس program عبارت :
Splash SP = new Splash();
رو باید به این
SP = new Splash(); تغییر بدید (شما از همون SP داخل Program استفاده نمی کنید بلکه یک متغیر SP دیگه معرفی می کنید که درست نیست!).

در ضمن نوشته بودید که نمی دونید چرا هنگام معرفی SP ، مقدار null رو بهش می دیم؟!!!!
دلیلش اینه : توصیه می کنم که اصلا هیچگاه متغیری رو بدون مقدار رها نکنید.در واقع رها کردن متغیر بدون مقدار،یعنی آماده کردن زمینه برای برخی خطا ها (باگها) که ممکنه یک باگ ساده که به راحتی میشه پیداش کرد رو به صورت بغرنجی،پیچیده کنه و عملا ساعتها درگیر پیدا کردن اون بشید.من تا حالا چند بار در عمل به این مشکل برخوردم (در اینگونه موارد معمولا هر بار اجرای برنامه،از برنامه رفتار متفاوتی سر می زنه که خودش تعجب آوره!)
خوب شاید بگید که دات نت خودش هر متغیر رو مقدار دهی اولیه می کنه که البته درست است (متغیر های Reference Type را با null ،متغیر int را با صفر و ...) اما توجه به دو نکته این توصیه رو برای دات نت هم پا برجا میکنه:
1) آیا می دونید رفتارش با متغیرهای bool چیه (مقدار پیشفرض false یا true)؟ هدف از این سئوال اینکه که یاد اوری بشه که در موقع کد نویسی به جای فکر کردن به این مسائل کوچک یا گشتن توی منابعتون برای جواب اینگونه سئوال ها،نوشتن:

bool b = false;
خیلی راحتره(نه وقتتون گرفته میشه ،نه ذهنتون بیخود درگیر میشه و ..)!هرچند که خوده دات نت مقدار false رو به متغییر bool تخصیص میده.
2) در همه زبانها برنامه نویسی این رفتار دات نت (مقدار دهی اولیه متغیر ها) دیده نمیشه.و برای افرادی مثل من که با چند زبان برنامه می نویسن (یا حتی کسانی که می خواهند در آینده زبان های دیگه ای رو یاد بگیرن و از اونها هم استفاده کنن)،بهتره این رفتار به شکل یک عادت در بیاد «متغیر رو بدون مقدار رها نکن».حالا زبان برنامه نویسیت هرچی میخواد باشه!
موفق باشید