[英]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.