مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
سلام ، من یه مشکلی در بستن فرمها و باز کردن فرم جدید دارم ، من می خوام وقتی فرم اول باز شد و بعد از ورود اطلاعات با زدن یک کلید فرم اول بسته بشه و فرم دوم باز بشه ، اما فقط فرم دوم باز میشه و تا وقتی که فرم دوم بسته نشه فرم اول هم بسته نمیشه ، باید جیکار کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
نمونه کد :
private void sabt2_Click(object sender, EventArgs e)
{
showm();
this.Close();
}
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
نقل قول:
نوشته شده توسط
ali2006sr
سلام ، من یه مشکلی در بستن فرمها و باز کردن فرم جدید دارم ، من می خوام وقتی فرم اول باز شد و بعد از ورود اطلاعات با زدن یک کلید فرم اول بسته بشه و فرم دوم باز بشه ، اما فقط فرم دوم باز میشه و تا وقتی که فرم دوم بسته نشه فرم اول هم بسته نمیشه ، باید جیکار کنم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
نمونه کد :
private void sabt2_Click(object sender, EventArgs e)
{
showm();
this.Close();
}
سلام.
https://barnamenevis.org/showthread.php?t=178314
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
از این کد استفاده کن در فرم اولت.
this.Hide();
frmMain NextFrm = newfrmMain();
NextFrm.ShowDialog();
this.Close();
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
نقل قول:
نوشته شده توسط
mohsenashkboos
از این کد استفاده کن در فرم اولت.
this.Hide();
frmMain NextFrm = newfrmMain();
NextFrm.ShowDialog();
this.Close();
اشکال این کار این است که تا زمانیکه برنامه تمام نشه فرم اول همینطوی میشینه در حافظه.
چرا وقتی که روش بهتر وجود دارد به قایم کردن فرم متوصل بشیم؟
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
نقل قول:
نوشته شده توسط
اَرژنگ
اشکال این کار این است که تا زمانیکه برنامه تمام نشه فرم اول همینطوی میشینه در حافظه.
چرا وقتی که روش بهتر وجود دارد به قایم کردن فرم متوصل بشیم؟
با تشکر از شما.برای اینکه فرم از حافظه برداشته شود میتوانید ازتابع dispose() استفاده کنید :
this.Hide();
Form2 NextFrm = newForm2();
NextFrm.ShowDialog () ;
this.Close () ;
this.Dispose();
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
نقل قول:
نوشته شده توسط
mohsenashkboos
با تشکر از شما.برای اینکه فرم از حافظه برداشته شود میتوانید ازتابع dispose() استفاده کنید :
this.Hide();
Form2 NextFrm = newForm2();
NextFrm.ShowDialog () ;
this.Close () ;
this.Dispose();
خیر!
لازم به استفاده از دیسپز نیست.
من میگم که یک فرم اضافی همینطوری تو حافظه میشینه تا موقعی که برنامه بسته شه، اگر نگاه کنید میبینید که فرم اول را نمیتوانید ببندید و با قایم کردن این مشکل را ماسمالی میکنند.
از لحاض کد نویسی کار میکنه، ولی یک برنامه نویس نمیتونه دلیل اینکه چرا یک فرم را قایم نگه داشته را بازگو کنه.
از لحاض اینکه فقط یک کلک است که در ظاهر فقط کار میکنه، در پشت پرده بر اصولی پایدار نیست.
یکی بپرسه دلیل قایم کردن فرم چیه ؟ جوابش را چه میشه داد؟
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
من حرف شما را قبول دارم که میگید هیدن کردن یک کلیک اما من آنرا تا موقعی هیدن میکنم که فرم 2 باز شه و بعد از آن عملا با دستور dispose من آنرا از حافظه بر میدارم پس دیگه مشکل چیه؟؟!!
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
نقل قول:
نوشته شده توسط
mohsenashkboos
من حرف شما را قبول دارم که میگید هیدن کردن یک کلیک اما من آنرا تا موقعی هیدن میکنم که فرم 2 باز شه و بعد از آن عملا با دستور dispose من آنرا از حافظه بر میدارم پس دیگه مشکل چیه؟؟!!
خیر، تا بعد از اینکه فرم ۲ باز بشه از حافظه برنمیدارید، بعد از اینکه فرم ۲ بسته بشه از حافظه برمیدارید.
۱.چرا اصلا قایم کردنش لازمه؟
۲.چرا بعد از اینکه فرم ۲ نشان داده میشه بسته میشه؟ مگر نه اینکه منطقش این است که یک فرم نشان داده بشه و بعدش یک فرم دیگر؟ اینکه بعد از فرم دوم هنوز تو حافظه است دلیلش چیه؟
۳.چرا فرم اول تا موقعی که برنامه تمام نشده همینطوری در حافظه است؟
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
this.Hide();
Form2 NextFrm = newForm2();
NextFrm.ShowDialog () ;
this.Close () ;
this.Dispose();
تا بسته نشدن NextFrm دستور this.close اجرا نمی شود و فرم در حافظه می ماند
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
سلام.
یه جمله هم من بگم و رفع زحمت كنم!
اولین فرمی كه برنامه اون رو new میكنه و نمایش میده، و بصورت پیش فرض توی program.cs قرار داره، در واقع handle برنامه به حساب میاد. بنابراین هرجای برنامه كه handle رو به هر نحوی، بزنیم درب و داغونش كنیم(Close, Dispose ...) مثل این هست كه Application.Exit كرده باشیم!!
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
يك روش جالب :
توي قسمت Main برنامه يك ايونت اد كن قبل از اپليكيشن.ران :
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
Application.Run(new Form1());
توي ايونت هم اين كد رو بذار :
Application.Run(new Form2());
فقط يه فكري به حال بسته شدن فرم دوم بكن چون كل برنامه رو نمي بنده من تست نكردم البته
نقل قول: مشکل در بسته شدن فرم قبلی پس از باز شدن فرم جدید
نقل قول:
نوشته شده توسط
Vahid_moghaddam
this.Hide();
Form2 NextFrm = newForm2();
NextFrm.ShowDialog () ;
this.Close () ;
this.Dispose();
تا بسته نشدن NextFrm دستور this.close اجرا نمی شود و فرم در حافظه می ماند
ممنون از راهنماییتون.