PDA

View Full Version : سوال: باز شدن يك فرم فقط يك بار تا وقتي كه باز است



headphone
سه شنبه 24 اردیبهشت 1387, 16:54 عصر
سلام به دوستان
من با يك باتون يك فرم رو باز مي كنم . ميخوام اگر فرم باز است و دوباره روي باتون كليك كردم ديگه فرم باز نشه تا وقتي كه ببندمش . چجوري بايد اين كارو بكنم ....

علیرضا مداح
سه شنبه 24 اردیبهشت 1387, 17:36 عصر
سلام دوست عزیز
یک روش اینست که چک کنید شیء Form از نوع فرم مورد نظر شما در کالکشن Application.OpenForms وجود دارد یا خیر ،....

headphone
سه شنبه 24 اردیبهشت 1387, 18:41 عصر
وجود يا عدم وجودش رو چجوري چك كنم لطفآً با كد بگين/

علیرضا مداح
سه شنبه 24 اردیبهشت 1387, 19:37 عصر
بسیار ساده ، از کدی شبیه به قطعه کد زیر میتوانید استفاده کنید :


private void btnShow_Click(object sender, EventArgs e)
{
//Showing Form2 if it's not open.
bool isOpen = false;
foreach (Form frm in Application.OpenForms)
{
if (frm is Form2)
{
isOpen = true;
break;
}
}
if (!isOpen)
{
Form2 f = new Form2();
f.Show();
}
}

headphone
شنبه 28 اردیبهشت 1387, 07:37 صبح
من كد فوق را كه در C# است به VB تبديل كردم ( به شكل زير ) ولي درست كار نمي كند و هيچ وقت وارد شرط if داخل حلقه For Each نمي شود . در حالي كه اين كد در C# بدرستي كار مي كند . مي شه بگين مشكلش چيه؟




Dim isopen As Boolean = False
Dim frm As Form
For Each frm In Application.OpenForms
If frm Is Form2 Then
isopen = True
Exit For
End If
Next
If Not (isopen) Then
Dim f As New Form2
f.Show()

End If

Dariuosh
شنبه 28 اردیبهشت 1387, 09:59 صبح
فقط Show کن ، يعني New نکن

drwatson
یک شنبه 29 اردیبهشت 1387, 20:37 عصر
اکه می خوای از new استفاده کنی اینطوری عمل کن



PublicClass Form1
Dim f2 AsNew Form2
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

If f2.IsAccessible = TrueThen
ExitSub
ElseIf f2.IsDisposed = TrueThen
f2 = New Form2
EndIf
f2.MdiParent = Me
f2.Show()

EndSub