我有一个主窗体的应用程序,它作为一种框架和主窗体中的一个区域,我打开其他窗体。这些表单永远不能关闭,所以当打开一个新表单时我会使用此代码首次打开它:
frm.WindowState = FormWindowState.Maximized;
frm.BringToFront();
然后如果另一个表单被打开,我需要再次显示它我只是使用:
frm.Show();
问题是当我第一次打开表格时它完美定位并且边框排列很好。当我使用frm.Show()将其恢复时,它会稍微向左和向下移动。有什么线索的原因?
答案 0 :(得分:6)
您应该在表单属性窗口中将StartPosition属性设置为“manual”
或
frm.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
答案 1 :(得分:2)
从您的解释中,我了解到您正在使用父表单来包含MDI子表单(如果我错了,请更正我)
当显示新的MDI子表单时,将其放置为使子表单处于“级联”状态,即每个子表单与前一个表单位于同一位置加上偏移量。当您隐藏子表单并再次显示它时,MDI容器可能会认为它是一个新的子表单,并相应地放置...
我认为您需要在隐藏子表单之前保存子表单的位置,以便在再次显示时可以将其还原