PDA

View Full Version : سوال: برگشتن به فرم اصلی برنامه بدون اجرای فرم splash



گل نرگس68
جمعه 01 شهریور 1392, 23:39 عصر
سلام دوستان گرامی

یه سوال داشتم
راستیتش من یه فرم اسپیلش دارم که اول برنامم اجرا میشه،بعد از اون فرم اصلی برنامه ( home) اجرا میشه
سوال من اینه، خروج بعضی از فرمهام برگشتن به Home هستش ،اگه دوباره این فرم رو show کنم

فرم اسپیلش هم دوباره اجرا میشه،اگه میشه راهنماییم کنید که چکار کنم فرم اسپیلشم اجرا نشه

ممنون

اینم کدی که تو فرم Home دارم مربوط به اجرای فرم اسپیلش





public fr_start()
{

Thread t = new Thread(new ThreadStart(sp));
t.Start();
Thread.Sleep(5000);
InitializeComponent();
t.Abort();
}

public void sp()
{
Application.Run(new fr_splash());
}

danialafshari
جمعه 01 شهریور 1392, 23:59 عصر
سلام
شما باید فرم Splash رو قبل از Home قرار بدید
شما در Program.cs بیا و Application.Run رو روی Splash ست کن بعد در فرم Splash که تایمری وجود داره بعد از زمان مشخص شده فرم Home رو باز کن.

گل نرگس68
شنبه 02 شهریور 1392, 00:13 صبح
سلام
شما باید فرم Splash رو قبل از Home قرار بدید
شما در Program.cs بیا و Application.Run رو روی Splash ست کن بعد در فرم Splash که تایمری وجود داره بعد از زمان مشخص شده فرم Home رو باز کن.


فرم home برای من باز میشه ،سوال من اینه که چه کار کنم که فقط اولین بار که برنامه اجرا میشه فرم splash اجرا بشه و در دفعات بعدی وقتی بزنم رو دکمه Home در هر کدوم از فرمام فقط فرم home برام اجرا بشه

این کدی که میزنم فرم splash رو هم برام باز میکنه،شاید الان شما جواب من رو داده باشید ولی من متوجه نشدم :افسرده: اگه میشه بیشتر توضیح بدید ممنونتون میشم


fr_start ss = new fr_start();
ss.Show();

mousa1992
شنبه 02 شهریور 1392, 00:39 صبح
فرم home رو چیکار میکنی وقتی از دید مخفی میشه و چجوری دوباره نشونش میدی ؟ کدهاتو بذار

همونطور که اقای danialafshari (http://barnamenevis.org/member.php?68467-danialafshari) گفتن فرم splash رو قبل از همه اجرا میکنن و برای این قرارش میدن که فرم اصلی اماده لود شدن بشه (در مواردی که فرم اصلی سنگین باشه )
شما داری بیخودی 5 ثانیه کاربر رو معطل میکنی !
در هر صورت تصمیم با خودتونه اگه هنوزم اصرار داری که فرم splash رو تو فرم اصلی فراخوانی کنی چیزایی که تو خط اول ازت خواستمو بگو تا راهنماییت کنم

گل نرگس68
شنبه 02 شهریور 1392, 00:51 صبح
فرم home رو چیکار میکنی وقتی از دید مخفی میشه و چجوری دوباره نشونش میدی ؟ کدهاتو بذار

همونطور که اقای danialafshari (http://barnamenevis.org/member.php?68467-danialafshari) گفتن فرم splash رو قبل از همه اجرا میکنن و برای این قرارش میدن که فرم اصلی اماده لود شدن بشه (در مواردی که فرم اصلی سنگین باشه )
شما داری بیخودی 5 ثانیه کاربر رو معطل میکنی !
در هر صورت تصمیم با خودتونه اگه هنوزم اصرار داری که فرم splash رو تو فرم اصلی فراخوانی کنی چیزایی که تو خط اول ازت خواستمو بگو تا راهنماییت کنم


حالا بجا 5 ثانیه شما بگو 1 ثانیه ، برنامم سنگین نیست،نمونه پروژه ست برای استاد این فرم هم اینجا گذاشتم برای زیبایی :لبخند:

فرض کنید رو فرم home یه دکمه ورود دارم که وارد فرم ورود میشه داخل اون دکمه اینو گذاشتم


fr_login login = new fr_login();
this.Hide();
login.Show();


حالا تو فرم لوگین هم یه دکمه بازگشت دارم که باید برگرده به home که این کدشه


this.Close();
fr_start ss = new fr_start();
ss.Show();



خب مطمئنا با اجرا کردن این کد ،فرم splash دوباره اجرا میشه،میخوام بدونم چه کار کنم که اجرا نشه و مستقیم بره home رو اجرا کنه

mousa1992
شنبه 02 شهریور 1392, 00:59 صبح
fr_login login = new fr_login();
this.Hide();
login.ShowDialog();
this.show();






کد بالا رو جایگزین کن :|

توضیحات :
کاری که شما انجام میدید اینه که فرم اصلی رو hide میکنید و زمانی که از فرم لاگین برمیگردین دوباره ی نمونه جدید میسازید از فرم اصلی و نمایشش میدین که باعث میشه چندین نمونه از فرم اصلیتون توی حافظه بمونه !
شما باید همون نمونه ساخته شده قبلی رو بتونید hide و show کنید بدون ایجاد نمونه جدید
کدی که بالا قرار دادم فرم لاگین رو به عنوان یک dialog باز میکنه و پردازش متوقف میشه تا اینکه نتیجه از فرم لاگین برگرده ( وقتی که فرم لاگین رو بستی ادامه کدها از showdialog به بعد اجرا میشن که در واقع کد show اجرا میشه و همون فرم قبلی نمایش داده میشه بدون مشکلات فعلی )

موفق باشید

گل نرگس68
شنبه 02 شهریور 1392, 01:16 صبح
توضیحات :

کدی که بالا قرار دادم فرم لاگین رو به عنوان یک dialog باز میکنه و پردازش متوقف میشه تا اینکه نتیجه از فرم لاگین برگرده ( وقتی که فرم لاگین رو بستی ادامه کدها از showdialog به بعد اجرا میشن که در واقع کد show اجرا میشه و همون فرم قبلی نمایش داده میشه بدون مشکلات فعلی )

موفق باشید

موفق شدم :|

ممنون،الان دقیقا متوجه شدم که فرق show , showdialog چیه

:تشویق: تشکر