بستن یک فرم

Majid 3D

Member
چه جوری میشه یک فرم رو به طور کامل بست ؟
فرض کنید من دو تا فرم دارم ... در حالت پیش فرض فرم اول فعاله و برای رفتن به فرم دوم یک دکمه گذاشتم، پس وقتی روی دکمه کلیک میشه مشخصه ی visible فرم اول باید false و فرم دوم باید true باشه، حالا اگه کاربر بخواد با یه دکمه فرم دوم رو ببنده به طوری که فرم اول فعال باشه باید چی کار کنه ؟
اگه روی ضربدر کلیک کنه فرم فقط مخفی میشه! وقتی میری توی تاسک منجر میبینی که در حال اجراس!
امیدوارم فهمیده باشید که چی گفتم.
 

the_king

مدیرکل انجمن
پاسخ سوال شما دو متد Load و Unload است، مخصوصا Unload.

شما در هنگامی که می خواهید فرم دوم نمایش یابد از یک چنین کدی استفاده می کنید، درسته ؟

کد:
Private Sub Command1_Click()
    Form1.Visible = False
    Form2.Visible = True
End Sub

اتفاقی که در عمل می افته اینه، اول فرم Form1 که آشکار است و طبعا Load شده، ناپدید میشه ولی Unload نخواهد شد.
و فرم Form2 که تا به حال Load نشده، Load میشه و سپس آشکار خواهد شد.
حالا اگر به هر علتی فرم Form2 بسته بشه، همچنان Form1 در حافظه قرار داره و به همین دلیل هنوز اجرای برنامه به پایان نرسیده.


ولی اگر بجای کد بالا از این کد استفاده کنید، نتایج فرق خواهد کرد :

کد:
Private Sub Command1_Click()
    Form2.Visible = True
    Unload Form1
End Sub

ابتدا فرم Form2 را که تا به حال Load نشده، Load می کنیم و سپس آشکار میشه.
تا اینجای کار مشابه روتین قبلی است ولی Unload کردن Form1 که بعد از اون انجام میشه تمامی
حافظه مربوط به فرم Form1 رو آزاد می کنه و حقیقتا فرم Form1 رو می بنده.
حالا اگر به هر علتی فرم Form2 بسته بشه و حافظه اش آزاد بشه، فرم دیگری در حافظه قرار نداره و اجرای برنامه به پایان می رسه.

اگر قصد دارید که از فرم Form2 دوباره به فرم Form1 برگردید می توانید از این کد استفاده کنید :

کد:
Private Sub Command1_Click()
    Form1.Visible = True
    Unload Form2
End Sub

و اگر می خواهید فرم Form2 با فشار یک دکمه بطور کامل بسته بشه و برنامه هم خاتمه پیدا کنه از این کد استفاده کنید :

کد:
Private Sub Command1_Click()
    Unload Form2
End Sub
 

Majid 3D

Member
یه مشکلی توی وی بی هست ... فرض کنید من دو تا فرم دارم، اگه روی دکمه ی close فرم اول کلیک کنم برنامه کاملا بسته میشه ولی اگه روی دکمه ی close فرم دوم کلیک کنم فقط اون فرم بسته میشه ولی برنامه در حال اجراس!راهی هست که یه کاری کنیم اگه توی هر فرمی روی دکمه ی ضربدر کلیک شه برنامه بسته بشه ؟ و یک سوال دیگه ... آیا کسی میدونه که دستور unload و load توی ویبی 2008 به چه کدی تبدیل شده ؟ چون من هر چی میزنم جز کدها حساب نمیشه! ؟؟
 

جدیدترین ارسال ها

بالا