Другой вариант - написать дополнительный код для настроек приложения и выполнить его в formLoad и formClosed. Это не использует привязку данных.
Недостатки:
- Еще код для написания.
- Очень неудобно. Порядок, в котором вы устанавливаете свойства в formLoad, сбивает с толку. Например, вы должны убедиться, что вы установили размер окна, прежде чем устанавливать расстояние разделителя.
Сейчас это мое предпочтительное решение, но, похоже, слишком много работы. Чтобы уменьшить объем работы, я создал класс WindowSettings, который сериализует расположение окна, размер, состояние и любые положения разделителя в одну настройку приложения. Затем я могу просто создать настройку этого типа для каждой формы в моем приложении, сохранить при закрытии и восстановить при загрузке.
Я разместил исходный код, включая класс WindowSettings и некоторые формы, которые его используют. Инструкции по добавлению его в проект включены в файл WindowSettings.cs. Самым сложным было выяснить, как добавить параметр приложения с настраиваемым типом. Вы выбираете Обзор ... в раскрывающемся списке типов, а затем вручную вводите пространство имен и имя класса. Типы из вашего проекта не отображаются в списке.
Обновление: я добавил несколько статических методов, чтобы упростить шаблонный код, который вы добавляете в каждую форму. После того, как вы выполнили инструкции по добавлению класса WindowSettings в свой проект и созданию настройки приложения, вот пример кода, который необходимо добавить в каждую форму, положение которой вы хотите записать и восстановить.
private void MyForm_FormClosing(object sender, FormClosingEventArgs e)
{
Settings.Default.CustomWindowSettings = WindowSettings.Record(
Settings.Default.CustomWindowSettings,
this,
splitContainer1);
}
private void MyForm_Load(object sender, EventArgs e)
{
WindowSettings.Restore(
Settings.Default.CustomWindowSettings,
this,
splitContainer1);
}
person
Don Kirkby
schedule
19.09.2008