PDA

View Full Version : مبتدی: جلوگیری از بازکردن فرم باز شده



pouyansaraf
شنبه 15 اسفند 1388, 18:26 عصر
سلام یه سوال
وقتی من با زدن یک کلید فرم2 را باز میکنم، اگر دوباره روی آن کلید کلیک کنم همان فرم 2دوباره باز می شود.
چطور می تونم از دوباره باز شدن فرم2 جلوگیری کنم
فکر کنم باید به این صورت باشد که چک کنم آیا فرم باز است یا نه که اگر فرم2 باز نبود آنوقت فرم2 باز شود، که البته کد این حالت را هم نمی دانم. :افسرده:
در هر صورت ممنون میشم یه کمکی به من بکنید.

ebrahimv
شنبه 15 اسفند 1388, 18:46 عصر
فکر کنم مشکل شما اینه که فرم خودتون را به عنوان یه متغییر تعریف کرده بعد اونو نمایش میدی
خوب راهی که داری اینه که فرم اصلی رو نمایش بده
در این حالت اصلا نمیتونی فرم رو دو بار نمایش بدی

pouyansaraf
شنبه 15 اسفند 1388, 18:54 عصر
سلام
یعنی شما می گویید از دستور ShowDialog استفاده کنم
مشکلی که در باز کردن با این دستور دارم اینه که تا وقتی این فرم2 را نبندم نمی توانم فرم دیگری را باز کنم.
دوم اینکه می خواهم فرم2 من به صورت فرزند child در فرم 1 باز بشه
قاعدتا باید یه دستور خوب و راحتی باشه. تو اینجا گشتم متاسفانه پیدا نکردم
اگر دستوری مد نظرتون هست ممنون میشم بگیویید

pouyansaraf
یک شنبه 16 اسفند 1388, 15:29 عصر
مشکل حل شد
ممنون

sari-1369
یک شنبه 16 اسفند 1388, 16:18 عصر
Application.OpenForms() لیست فرم هایی که در حال حاظر توی برنامتون باز هستن رو میده . توسط اون میتونید چک کنید که فرم باز شده یا نه .

غلامرضا شریفی
یک شنبه 16 اسفند 1388, 17:47 عصر
همين جوري دليلي ندارد چون مشكل حل شده


If (IsNothing(Application.OpenForms("Form2"))) Then
Dim Form2 As New Form2
Form2.ShowDialog()
End If

pouyansaraf
یک شنبه 16 اسفند 1388, 19:03 عصر
دستتون درد نکنه اگر پست قشنگی هم در مورد Application.OpenForms مد نظر دارین
اگه ممکنه بفرمایید

Open-Source
دوشنبه 17 اسفند 1388, 09:31 صبح
1:
Dim fb As New frmBank
fb.ShowDialog()

2:
frmBank.ShowDialog()


من برای باز کردن فرمم از حالت اول استفاده میکنم.
حالا میخواستم بدونم وقتی فرم رو میبندم آیا فرم از حافظه dispose میشه یا نه؟
:متفکر:

pouyansaraf
شنبه 22 اسفند 1388, 16:54 عصر
اگر بخواهی چند تا از یک نمونه فرم باز کنی بهتره که یه متغیر از نوع فرم باز کنی وگرنه اگر بخواهی فقط یکی باز بشه بهتره که از حالت دوم که خودتون گفتید استفاده کنید.
موقع بستنش هم dispose میشه

bad_boy_2007
شنبه 22 اسفند 1388, 19:41 عصر
1:
Dim fb As New frmBank
fb.ShowDialog()

2:
frmBank.ShowDialog()


من برای باز کردن فرمم از حالت اول استفاده میکنم.
حالا میخواستم بدونم وقتی فرم رو میبندم آیا فرم از حافظه dispose میشه یا نه؟
:متفکر:

GC این عمل را برای شما انجام میدهد ولی بهتر است هر زمان کارتان با فرمها تمام شد صراحتا دستور Dispose را فراخوانی کنید که کار GC را ساده تر کنید :



Dim fb As New frmBank
fb.ShowDialog()
fb.Dispose()