Form.Show () немного перемещает позицию формы - PullRequest
2 голосов
/ 31 июля 2009

У меня есть приложение с главной формой, которая действует как своего рода фрейм и область внутри основной формы, где я открываю другие формы. Эти формы никогда не должны закрываться, поэтому, когда открывается новая, я использую этот код, чтобы открыть ее впервые:

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

И потом, если поверх этого откроется другая форма, и мне нужно показать ее снова, я просто использую:

frm.Show();

Проблема в том, что когда я открываю форму в первый раз, она отлично позиционируется, и границы выстраиваются красиво. Когда я использую frm.Show (), чтобы вернуть его, он слегка перемещает его влево и вниз. Любая подсказка, почему?

Ответы [ 2 ]

6 голосов
/ 20 августа 2009

Вы должны установить для свойства StartPosition значение «manual» в окне свойств формы

или

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

2 голосов
/ 31 июля 2009

Из ваших объяснений я понимаю, что вы используете родительскую форму для хранения дочерних форм MDI (поправьте меня, если я ошибаюсь)

Когда отображается новая дочерняя форма MDI, она размещается таким образом, чтобы дочерние формы находились «каскадно», т. Е. Каждая дочерняя форма находилась в той же позиции, что и предыдущая, плюс смещение. Когда вы скрываете дочернюю форму и снова показываете ее, контейнер MDI, вероятно, считает, что это новая дочерняя форма, и размещает ее соответственно ...

Я думаю, вам нужно сохранить местоположение дочерней формы, прежде чем скрыть ее, чтобы вы могли восстановить ее при повторном ее отображении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...