Приложение С# windows, как сохранить и восстановить позиции дочерних форм

У меня есть приложение Windows с формой MDI и некоторыми дочерними формами. Мне нужно сохранить положение дочерних форм, а затем восстановить, когда он будет открыт снова.

Как это сделать на С#?

Кроме того, мне нужно проверить, не скрыта ли строка заголовка дочерней формы в форме mdi (например, строка заголовка может быть скрыта из-за меню формы mdi). Если это так, то мне нужно установить позицию умнее.

Спасибо заранее...

2 ответа

Посмотрите эту статью CodeProject: Восстановить позицию и размер формы на С#

Суть в том, что вы должны принять размер и местоположение формы и сохранить его в настройках проекта. Вам придется немного приспособить его к вашим потребностям (убедитесь, что форма соответствует границам родительского окна и т.д.).


Вы можете использовать свойство .Bounds формы для получения позиции и размера формы. Когда форма создается, вы устанавливаете свойство .Bounds, и когда форма закрывается, вы можете записать позицию и сохранить ее в реестре или файле. При настройке свойства .Bounds вам нужно убедиться, что координаты действительны для текущего размера рабочего стола, только если пользователь изменил разрешение или что-то пошло не так - вы не хотите, чтобы форма отображалась на рабочем столе. Вы можете использовать Screen.PrimaryScreen.WorkingArea для получения текущих размеров рабочего стола, а затем сравнить координаты сохраненных границ формы. Вам также необходимо установить для свойства формы StartPosition значение Manual, если вы хотите вручную установить местоположение.

licensed under cc by-sa 3.0 with attribution.