PDA

View Full Version : نمایش فرم جدید



reza erfani
شنبه 03 دی 1390, 12:17 عصر
سلام
دوستان یک سوال مبتدی میپرسم
من برای این که با کلیک رو باتون برم به فورم دوم از دستور زیر استفاده کرد
New_Compuny newco = new New_Compuny();
newco.Show();
حالا من میخوام که فرم جدید باز بشه ولی امکان استفاده از فرم یک وجود نداشته باشه به عبارتی Enabele ش false بشه

uniqueboy_ara
شنبه 03 دی 1390, 12:26 عصر
کافیه یه تغییر کوچیک تو فرمت بدی و اونو این شکلی بنویسی:

New_Compuny newco = new New_Compuny();
newco.ShowِDialog();


این خط کد رو هم آخرش اضافه کن تا حافظه اختصاص داده شده به این آبجکت بعد از اتمام کار باهاش، آزاد بشه:
newco.Dispose();

reza erfani
شنبه 03 دی 1390, 13:13 عصر
ممنون مشکلم حل شد
یه سوال این که نوشته بودید حافظه ی اختصاصیی داشته باشه یعنی چی متوجه نمیشم ؟

uniqueboy_ara
شنبه 03 دی 1390, 14:16 عصر
شما هر آبجکتی که ایجاد میکنید، یه حافظه ای بهش تعلق میگیره، که باید بعد از اتمام کارمون با اون آبجکت، حافظه اختصاص پیدا کرده رو به سیستم برگردونیم
شما فرض کن که مثلا همین آبجکتی که از فرم دومت ایجاد کردی 100kb حافظه بخواد و شما اتلاف حافظه رو در نظر نگرفته باشی، اونوقت به ازای هر 10 باری که روی اون دکمه مورد نظرت کلیک کنی ( نمایش فرم دوم ) 1mb حافظه به هدر میره
حالا فرض کن این آبجکتی که تولید شده و حافظه ای که بهش اختصاص داده شده خیلی پیچیده و سنگین باشه، اونوقت خودت حساب کن چقدر اتلاف منابع به وجود میاد!!!

mmd2009
شنبه 03 دی 1390, 16:27 عصر
با سلام

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


using(New_Compuny newco = new New_Compuny())
{
newco.ShowِDialog();
}


موفق باشید