簡體   English   中英

子窗口以MDI形式停靠

[英]Child windows docking in MDI forms

我有一個MDI表格和一些子表格。 我將子窗體停靠在MDI窗口的不同區域,但是當任何一個子窗體失去焦點時,其他停靠的窗體將重新排列。 由於混亂,我准備了一組圖像來顯示行為。

Image1,在單擊任何窗口之前:

在此處輸入圖片說明

Image2,在單擊窗口2之后:

在此處輸入圖片說明

問題是,當最靠左停靠的窗體獲得焦點時,它將調整到MDI窗口的右端而不考慮窗口1的大小。

我該如何解決這個問題? 謝謝。

還有另一種解決方法。 一個非常快速的示例是:

  • 創建一個新的Windows窗體(Form1)。 將其isMidiContainer屬性設置為true。
  • 現在,在其上放置一個面板(Panel1),並將其dock屬性設置為right,然后設置寬度。
  • 將另一個面板(panel2)放在窗體上,並將其停靠點也設置在右側。 現在,這兩個面板彼此相鄰靠接。

現在創建2個新的Windows窗體(Form 2和Form3)。

現在,在Form1的主菜單中的InitializeComponent()下面,添加:

Form2 f2 = new Form2();
f2.TopLevel = false;
f2.Dock = DockStyle.Fill;
panel1.Controls.Add(f2);
f2.Show();

Form3 f3 = new Form3();
f3.TopLevel = false;
f3.Dock = DockStyle.Fill;
panel2.Controls.Add(f3);
f3.Show();

這是有點不同的方法,但是應該可以正常工作。

您是否嘗試過在子窗體(W2)的Resize方法上固定大小?

    //something like this
    private void W2_Resize(object sender, EventArgs e)
    {
        Size pSize = this.ClientSize;
        // Resize the form
    }

或使用Focus方法。 我不知道這是否會引起性能問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM