2009-07-31 48 views
1

我有一個主窗體的應用程序,充當一種框架和主窗體內打開其他窗體的區域。這些形式一定不能永遠這樣,當一個新打開我用這個密碼打開它的第一次封閉:Form.Show()稍微移動窗體位置

frm.WindowState = FormWindowState.Maximized; 
frm.BringToFront(); 

然後,如果另一種形式被打開最重要的是,我需要表現出來我只是使用:

frm.Show(); 

問題是,當我第一次打開窗體時,它的位置完美,邊界線很好。當我使用frm.Show()將其返回時,它會稍微向左和向下移動它。任何線索爲什麼?

回答

2

從你的解釋,我知道您使用的是父窗體包含MDI子窗體(糾正我,如果我錯了)

當顯示一個新的MDI子窗體,它被放置,這樣的孩子表單處於「級聯」狀態,即每個子表單位於前一個位置的相同位置加上一個偏移量。當您隱藏一個子窗體並再次顯示它時,MDI容器可能認爲它是一個新的子窗體,並相應地放置它...

我認爲您需要在隱藏之前保存子窗體的位置,這樣當你再次顯示它

+0

因此,對於所有20種左右的形式,我需要保存每個位置並保持跟蹤?或者有沒有辦法可以在這個特定的位置說frm.Show()? – novacara 2009-07-31 18:56:53

5

可以將其還原,您應該在窗體屬性窗口中StartPosition屬性設置爲「手動」

frm.StartPosition = System.Windows.Forms.FormStartPosition 。手冊;