نمایش نتایج 1 تا 4 از 4

نام تاپیک: نمایش دادن فقط یک بار هر فرم روی MDI form

  1. #1

    Question نمایش دادن فقط یک بار هر فرم روی 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

    کدم رو از این ادرس دانلود کنید
    مرسی

  2. #2

    نقل قول: نمایش دادن فقط یک بار هر فرم روی MDI form

    كد زير رو امتحان كنيد.
    Form Child;
    if (Application.OpenForms["Form1"] != null)
    Child = Application.OpenForms["Form1"];
    else
    Child = new Form1();
    Child.Show(DockPanel);

  3. #3
    کاربر دائمی آواتار unique1984
    تاریخ عضویت
    دی 1384
    محل زندگی
    Newjef Land
    سن
    39
    پست
    221

    نقل قول: نمایش دادن فقط یک بار هر فرم روی 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();

  4. #4

    نقل قول: نمایش دادن فقط یک بار هر فرم روی 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);



    خیلی خیلی ممنونم بابت توجه و پاسختون
    مرسی

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •