نمایش دادن فقط یک بار هر فرم روی MDI form
با سلام
من برنامه خود را ضمیمه می کنم تا کمکم کنید
در این برنامه از کامپوننت WeifenLuo.WinFormsUI.Docking.dll استفاده کرده ام
در این کامپوننت که ظاهر منوی برنامه شبیه آفیس 2007 می شود باید برای نمایش فرمها از DockPanel استفاده کرد .
مشکل اینجاست که در این حالت به ازای هر دفعه کلیک یک بار فرم را باز می کنم
کد زیر را نوشتم ولی باز هم جواب نمی دهد در واقع اصلا وارد حلقه نمی شود:
Form1 Child = new Form1();
MdiMain Parent = new MdiMain();
foreach (Form f in Parent.MdiChildren )
if (f.Name == Child.Name)
{
Child.Select();
return;
}
Child.Show(DockPanel);
خواهش می کنم یک پیشنهاد ارائه دهید که برای حل این مشکل چه کنم؟:گریه::گریه::گریه:
http://ttg.ir/test1/newfolder.rar
کدم رو از این ادرس دانلود کنید
مرسی
نقل قول: نمایش دادن فقط یک بار هر فرم روی MDI form
كد زير رو امتحان كنيد.
Form Child;
if (Application.OpenForms["Form1"] != null)
Child = Application.OpenForms["Form1"];
else
Child = new Form1();
Child.Show(DockPanel);
نقل قول: نمایش دادن فقط یک بار هر فرم روی MDI form
سلام
بهتره متد زیر رو بنویسین و برای سایر فرمهای چایلدتون هم ازش استفاده کنین.
private Boolean IsRunning(string formName)
{
foreach (Form frm in Application.OpenForms)
{
if ((frm.Name == formName))
{
frm.BringToFront();
return true;
}
}
return false;
}
و برای استفاده از اون هم به صورت زیر عمل کنین
Form1 Child = new Form1();
if ( !IsRunning("Form1"))
Child.Show();
نقل قول: نمایش دادن فقط یک بار هر فرم روی MDI form
دوستای عزیز
ایده کاملا درست بود ولی تو برنامه من جواب و این طوری اصلاح شد :
Form1 Child = new Form1();
MdiMain Parent = new MdiMain();
//foreach (Form f in Parent.MdiChildren)
foreach (Form f in Application.OpenForms )
if (f.Name == Child.Name)
{
Child.Select();
return;
}
Child.Show(DockPanel);
خیلی خیلی ممنونم بابت توجه و پاسختون
مرسی