Form.Show()稍微移动窗体位置

时间:2009-07-31 18:07:35

标签: c# winforms

我有一个主窗体的应用程序,它作为一种框架和主窗体中的一个区域,我打开其他窗体。这些表单永远不能关闭,所以当打开一个新表单时我会使用此代码首次打开它:

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

然后如果另一个表单被打开,我需要再次显示它我只是使用:

frm.Show();

问题是当我第一次打开表格时它完美定位并且边框排列很好。当我使用frm.Show()将其恢复时,它会稍微向左和向下移动。有什么线索的原因?

2 个答案:

答案 0 :(得分:6)

您应该在表单属性窗口中将StartPosition属性设置为“manual”

frm.StartPosition = System.Windows.Forms.FormStartPosition.Manual;

答案 1 :(得分:2)

从您的解释中,我了解到您正在使用父表单来包含MDI子表单(如果我错了,请更正我)

当显示新的MDI子表单时,将其放置为使子表单处于“级联”状态,即每个子表单与前一个表单位于同一位置加上偏移量。当您隐藏子表单并再次显示它时,MDI容器可能会认为它是一个新的子表单,并相应地放置...

我认为您需要在隐藏子表单之前保存子表单的位置,以便在再次显示时可以将其还原