PDA

View Full Version : سوال: جلوگیری از اجرای دوباره اسپلاش اسکرین در برنامه



marasiali
پنج شنبه 05 تیر 1393, 16:19 عصر
سلام من یک کاربر مبتدی سی شارپم و چهارده سالمه واسه همین خیلی توش حرفه ای نیستم
من طبق این آموزش (http://sourcegozar.ir/mohamad/DL2/SplashScreenCSharp%28www.SourceGozar.com%29.rar) واسه برنامه ام یک اسپلاش اسکرین ساختم اما برنامه من طوریه که تو فرم اصلی توسط دکمه ای فرم اصلی هاید میشه و فرم 2 نشون داده میشه و تو فرم 2 نیز توسط دکمه ای با کد زیر میتونه کاربر به فرم 1 برگرده.
Form1 m = new Form1();
m.Show();
this.Close();

اما مشکل اینجاست که وقتی دکمه زده میشه دوباره اسپلاش اسکرین نشون داده میشه در حالیکه هیچ وقت نباید در حین اجرای برنامه چنین امره صورت بپذیره.چجوری میتونم مشکلو حل کنم که فقط موقع شروع برنامه اسپلاش اسکرین بیاد؟

behnam-soft
پنج شنبه 05 تیر 1393, 21:50 عصر
سلام، شما احتمالا اون اسپلش رو در رویداد لود فرمت نوشتی، بنابراین هر بار که فرمت لود میشه، اون هم اجرا میشه، اول اینو بررسی کن اگر جز این بود بگو تا بریم سراغ بقیه راهکار ها.

marasiali
پنج شنبه 05 تیر 1393, 22:14 عصر
سلام، شما احتمالا اون اسپلش رو در رویداد لود فرمت نوشتی، بنابراین هر بار که فرمت لود میشه، اون هم اجرا میشه، اول اینو بررسی کن اگر جز این بود بگو تا بریم سراغ بقیه راهکار ها.

کد رو ببینین:
public Form1() {


Thread t = new Thread(new ThreadStart(Splash_screen));
t.Start();
Thread.Sleep(3750);
InitializeComponent();
t.Abort();


}
public void Splash_screen()
{
Application.Run(new Form0());
}








private void Form1_Load(object sender, EventArgs e)
{

}

همونطور که دیده میشه واضحه رویداد لود فرم خالیه
در ضمن اگه میخواین بدونین دقیقا اسپلاش رو از چه طریق ساختم فیلمی که از روش این رو ساختم تو پست اول هست.

khokhan
جمعه 06 تیر 1393, 11:01 صبح
اما مشکل اینجاست که وقتی دکمه زده میشه دوباره اسپلاش اسکرین نشون داده میشه :لبخند:در حالیکه هیچ وقت نباید در حین اجرای برنامه چنین امره صورت بپذیره:لبخند:.چجوری میتونم مشکلو حل کنم که فقط موقع شروع برنامه اسپلاش اسکرین بیاد؟ :لبخند:
شما وقتی می خواین فرم دوم رو ببندین ، یقینا فرم 1 باز هست دلیلی برای نمونه سازی دوباره اون نیست و دلیل اینکه اسپلش اسکرین اجرا می شه همین موضوعه

پس کد دکمه فرم 2 رو به این شکل بنویسین :


Form1 m = (Form1)Application.OpenForms["Form1"];
m.Show();
this.Close();

marasiali
جمعه 06 تیر 1393, 16:23 عصر
شما وقتی می خواین فرم دوم رو ببندین ، یقینا فرم 1 باز هست دلیلی برای نمونه سازی دوباره اون نیست و دلیل اینکه اسپلش اسکرین اجرا می شه همین موضوعه

پس کد دکمه فرم 2 رو به این شکل بنویسین :


Form1 m = (Form1)Application.OpenForms["Form1"];
m.Show();
this.Close();

دستتون درد نکنه عالی بود!حل شد!:لبخند::کف::کف::لبخند:
فقط یه سوال درباره کدتون که واسه اطلاعات خودم میپرسم:
خط اول به چه معناست و دقیقا این دستور چی داره میگه؟مخصوصا OpenForms در چه مواقعی به کار میره؟

khokhan
جمعه 06 تیر 1393, 16:40 عصر
دستتون درد نکنه عالی بود!حل شد!:لبخند::کف::کف::لبخند:
فقط یه سوال درباره کدتون که واسه اطلاعات خودم میپرسم:
خط اول به چه معناست و دقیقا این دستور چی داره میگه؟مخصوصا OpenForms در چه مواقعی به کار میره؟
قبلا هم توضیح دادم که معنی اش اینه که اون فرمی رو که قصد دارین نشون بدین فعلا بازهست و موقتا غیر فعال بوده و با بسته شدن فرم 2 دوباره فعال می شه