PDA

View Full Version : مبتدی: زمان نمايش فرم



mgh64120
شنبه 07 آذر 1388, 23:01 عصر
من در حال استفاده از فرم A هستم، چگونه بفهمم كه فرم B در حال نمايش است(Load شده)؟ آيا PEROPERTY خاصي از فرم اين مقدار(True Or False) رو نگه ميداره؟
:متفکر:

mgh64120
یک شنبه 08 آذر 1388, 15:35 عصر
فكر كردم اين سئوال خيلي آسونه ؟ :متفکر:
اگه ممكنه راهنماييم كنيد.

روح اله معینی زاده
یک شنبه 08 آذر 1388, 16:59 عصر
سلام
خاصیت Activated اگه اشتباه نکنم، رو می تونی چک کنی
شاید هم Activate
خدانگه دار

sari-1369
یک شنبه 08 آذر 1388, 23:21 عصر
لیست فرم های باز برنامه رو برمیگردونه .


My.Application.OpenForms()

ACorvinus
دوشنبه 09 آذر 1388, 10:47 صبح
لیست فرم های باز برنامه رو برمیگردونه .


My.Application.OpenForms()

سلام .

من امتحان کردم ولی جواب نداد به همین دلیل ننوشتم . یه بار امتحان کن .

مثلا وقتی فرم 2 باز هستش و ما این دستور رو مینویسیم:



If Not (My.Application.OpenForm.Item("Form2") Is Nothing) Then
Msgbox("Form2 Is Open")
Else
Msgbox("Form2 Is Close")
End If



همیشه مسیج باکس دوم اجرا میشه و شرط ما همیشه Nothing هستش !!!

mgh64120
دوشنبه 09 آذر 1388, 13:28 عصر
حالا نتيجه چي شد ؟ :متفکر:

Mani_rf
دوشنبه 09 آذر 1388, 13:42 عصر
از IsDisposed هم می توانی استفاده کنی.If Not From1.IsDisposed then Msgbox("Form is running!")

mgh64120
دوشنبه 09 آذر 1388, 21:04 عصر
از IsDisposed هم می توانی استفاده کنی.If Not From1.IsDisposed then Msgbox("Form is running!")

من امتحانش كردم ولي در هر دو حالت يعني چه فرم قبلا load شده باشه و چه Load نشده باشه، پيغام ظاهر ميشه!
:متفکر:

مهدی نان شکری
سه شنبه 10 آذر 1388, 10:48 صبح
با سلام
راه حل این همونی هست که دوست خوبم sari-1369 فرمودند.
ولی به یک نکته باید توجه کرد:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=88387
برای حل این می تونی از روش زیر استفاده کنین


For Each f As Form In My.Application.OpenForms
MsgBox(DirectCast(f, Form).Name)
Next

در واقع در روش فوق باگ وجود دارد و گاها نام فرم خالی نمایش داده می شود که من با پیمایش و Cast مورد رو حل کردم.
اگه جواب نداد باز مطرح کنین تا روش های دیگر رو بررسی کنیم.

ACorvinus
سه شنبه 10 آذر 1388, 16:05 عصر
با سلام
راه حل این همونی هست که دوست خوبم sari-1369 فرمودند.
ولی به یک نکته باید توجه کرد:
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=88387
برای حل این می تونی از روش زیر استفاده کنین


For Each f As Form In My.Application.OpenForms
MsgBox(DirectCast(f, Form).Name)
Next

در واقع در روش فوق باگ وجود دارد و گاها نام فرم خالی نمایش داده می شود که من با پیمایش و Cast مورد رو حل کردم.
اگه جواب نداد باز مطرح کنین تا روش های دیگر رو بررسی کنیم.


سلام .

مهندس من امتحان کردم و به قول شما نام فرم خالی نمایش داده میشه !!!

عرض کردین باگ داره این دستور؟!

ACorvinus
سه شنبه 10 آذر 1388, 16:17 عصر
سلام .

ببخشین مهندس یه سوال دیگه هم داشتم !

این عمل فقط وقتی که میخواییم نام فرم رو بدست بیاریم، جواب نمیده ؟
چون من در همون حلقه دستور



MsgBox(DirectCast(f, Form).Text)


رو گذاشتم، Text همه فرم هایی که بازه رو نشون میشه .

همین بود سوالم !!

مهدی نان شکری
سه شنبه 10 آذر 1388, 17:19 عصر
سلام .

مهندس من امتحان کردم و به قول شما نام فرم خالی نمایش داده میشه !!!

عرض کردین باگ داره این دستور؟!

با سلام
دستور فوق باگ ندارد باگ از My.Application.OpenForms می باشد که گاها نام فرم رو خالی نمایش می دهد. به لینک ارسالی توجه کنید.

ACorvinus
سه شنبه 10 آذر 1388, 22:40 عصر
با سلام
دستور فوق باگ ندارد باگ از My.Application.OpenForms می باشد که گاها نام فرم رو خالی نمایش می دهد. به لینک ارسالی توجه کنید.


ممنونم .

توجه کردم، وقتی اسم فرم رو در آرگومان My.Application.OpenForms.Items مینویسیم Fail میشه ولی وقتی میندازیم تو یه حلقه و با ایندکس کار می کنیم نتیجه کار Success هستش ولی متاسفانه همون نتیجه (خالی بودن نام فرم) رو میده .

به هرحال موفق باشین .

Hossis
چهارشنبه 11 آذر 1388, 21:45 عصر
از خاصیت visible فرم 2 استفاده کن،‌من امتحان کردم جواب داد