簡體   English   中英

如何確定MDI子窗體的屏幕位置?

[英]How do I determine an MDI child form's screen location?

我有一個帶有IsMdiContainer = true的主窗體“ MainForm”

我有一個或多個動態創建的子窗體,其中設置了MdiParent = MainForm

現在,我要做的是能夠通過設置MdiParent = null來分離這些子表單,但要保持完全相同的屏幕位置。

我試圖使用ChildForm.PointToScreen(ChildForm.Location),但這使我相對於窗體的工作區相對於屏幕位置。

編輯

表單本身上的PointToScreen()給了我幾乎正確的位置,除了它在表單內部為屏幕提供了0,0的屏幕位置,而.Location指向表單的外部邊緣。

您必須使用父級的mdi客戶端窗口的PointToScreen()方法:

    private void button1_Click(object sender, EventArgs e) {
        if (this.MdiParent != null) {
            MdiClient client = null;
            foreach (Control ctl in this.MdiParent.Controls) {
                if (ctl is MdiClient) { client = ctl as MdiClient; break; }
            }
            this.WindowState = FormWindowState.Normal;
            Point loc = client.PointToScreen(this.Location);
            this.MdiParent = null;
            this.Location = loc;
        }
    }

您無法避免在Aero上產生的輕微偏移,也無法避免閃爍。

暫無
暫無

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

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