PDA

View Full Version : خارج کردن فرم از حافظه



dr_csharp
جمعه 23 فروردین 1387, 20:05 عصر
سلام .
من تو برنامم چند فرم دارم ( مثلا Form1 بعنوان فرم اصلیه و با انتخاب هریک از button های روی این فرم ، دیگر فرم های نمایش داده میشه ). آیا وقتی مثلا Form2 نمایش داده میشه راهی برای خارج کردن Form1 از حافظه وجود نداره ؟ (در حال حاضر من فقط Form1 رو Hide میکنم )

رضا عربلو
جمعه 23 فروردین 1387, 23:55 عصر
احتیاجی به این کار ندارید. خود Garbage Collector هنگامی که Garabage Collecting انجام می دهد، آبجیکت هایی که دیگر نیاز به آن ها نمی باشد را از حافظه پاک می کند.

gdevnb
شنبه 24 فروردین 1387, 01:21 صبح
سلام .
من تو برنامم چند فرم دارم ( مثلا Form1 بعنوان فرم اصلیه و با انتخاب هریک از button های روی این فرم ، دیگر فرم های نمایش داده میشه ). آیا وقتی مثلا Form2 نمایش داده میشه راهی برای خارج کردن Form1 از حافظه وجود نداره ؟ (در حال حاضر من فقط Form1 رو Hide میکنم )
در صورتی که فرم اصلی باشه و شما Close کنید پروژه شما می بنده . اگه لازمه که ببنده فرم اصلی رو تغییر بدید.

hassan razavi
شنبه 24 فروردین 1387, 07:44 صبح
اگه می خواهید که فرم اصلی بسته و فرم جدید باز شود ، در فایل Program.cs و بعد از


Application.Run(new Form1());



Application.Run(new Form2));

یا هر طور دیگری خودتون مدیریتش کنید.

Amir Oveisi
شنبه 24 فروردین 1387, 10:47 صبح
در ضمن اگر Hide کنید فرم هنوز وجود داره و نمیشه حافظه اونو آزاد کرد

dr_csharp
یک شنبه 25 فروردین 1387, 09:51 صبح
ضمن تشکر از نظرات دوستان :
ببینید مثلا دوتا فرم Form1 ( فرم اصلی برنامه ) , Form2 داریم . قائدتا اول Form1 در program.cs بارگذاری میشه و نمایش داده میشه ! حالا با انتخاب یک کلید Form2.Show اتفاق می افته !
مسئله ای که هست : دیگه نیازی به Form1 نیست !!
بنابراین ShowDialog بدردم نمیخوره ! اگر Form1 هم Hide بشه که مادامیکه Form2 درحال اجراست باقی میمونه و .. و اگرم Form1 بسته بشه که کل پروژه بسته میشه !
آیا راه حلی هست !؟ ( برای اینکه وقتی به Form1 نیاز نداریم دیگه نباشه )

hassan razavi
یک شنبه 25 فروردین 1387, 10:34 صبح
شما در Program.cs پس از خط


Application.Run(new Form1());

بنویسید


Application.Run(new Form2());


حالا وقتی خواستید Form2 رو نشون بدهید کافیه مه Form1.Close کنید. در اینصورت Form1 بسته شده و از حافظه هم خارج میشه و Form2 نشون داده میشه و از این به بعد Form2 میشه فرم اصلیتون.

dr_csharp
یک شنبه 25 فروردین 1387, 21:57 عصر
شما در Program.cs پس از خط


Application.Run(new Form1());

بنویسید


Application.Run(new Form2());

حالا وقتی خواستید Form2 رو نشون بدهید کافیه مه Form1.Close کنید. در اینصورت Form1 بسته شده و از حافظه هم خارج میشه و Form2 نشون داده میشه و از این به بعد Form2 میشه فرم اصلیتون.
شما سناریو زیر در نظر بگیر :
اینبار بیش از دو فرم داریم ، Form1 همچنان بعنوان فرم اصلی ماست و دیگر فرم ها از طریق این فرم نمایش داده میشن .با راه حلی که شما ذکر کردین پس از فرم یک ، فرم 2 نمایش داده میشه ! درصورتیکه در صورت وجود چند فرم ( با توجه به انتخاب کاربر ) هیچ ترتیب خاصی برای نمایش فرم ها وجود نداره !
ممنون از توجه شما

gdevnb
دوشنبه 26 فروردین 1387, 01:19 صبح
یه فرم لوگین یا یه لوگو بزار زمانی که برنامه میاد بالا به عنوان فرم اصلی در program.cs بارگذاری بشه و بقیه فرمها از این طریق مدیریت بشن. دیگه با بستن فرم 1 برنامه تموم نمیشه.
این فرمها هم باری به سیستم تحمیل نمی کنند که حتماً لازم باشه ببندن.
موفق باشید.

dr_csharp
دوشنبه 26 فروردین 1387, 14:11 عصر
یه فرم لوگین یا یه لوگو بزار زمانی که برنامه میاد بالا به عنوان فرم اصلی در program.cs بارگذاری بشه و بقیه فرمها از این طریق مدیریت بشن. دیگه با بستن فرم 1 برنامه تموم نمیشه.
این فرمها هم باری به سیستم تحمیل نمی کنند که حتماً لازم باشه ببندن.
موفق باشید.
بنابراین راهی برای بستن فرم اصلی وجود نداره !؟ :لبخندساده: