Как сохранить и использовать размер окна приложения? - PullRequest
4 голосов
/ 06 января 2012

Используя .NET 4, как лучше всего сохранить размер и положение окна приложения при закрытии и использовать эти значения для запуска окна приложения при следующем запуске?

Я предпочитаю не делать этогокоснитесь любого вида реестра, но не знаете, есть ли какой-то app.config (аналог web.config для приложений ASP.NET), который я могу использовать для приложений Windows Presentation Foundation.

Спасибо.

Ответы [ 3 ]

10 голосов
/ 06 января 2012

Описание

Windows Forms

  • Создание свойств в настройках приложения LocationX , LocationY , WindowWidth , WindowHeight (типа int )
  • Сохранить местоположение и размер в Form_FormClosed
  • Загрузить и применить местоположение и размер в Form_Load

Образец

private void Form1_Load(object sender, EventArgs e)
{
    this.Location = new Point(Properties.Settings.Default.LocationX, Properties.Settings.Default.LocationY);
    this.Width = Properties.Settings.Default.WindowWidth;
    this.Height = Properties.Settings.Default.WindowHeight;
}

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    Properties.Settings.Default.LocationX = this.Location.X;
    Properties.Settings.Default.LocationY = this.Location.Y;
    Properties.Settings.Default.WindowWidth = this.Width;
    Properties.Settings.Default.WindowHeight = this.Height;
    Properties.Settings.Default.Save();
}

Дополнительная информация

WPF

  • Создание свойств в настройках приложения LocationX , LocationY , WindowWidth , WindowHeight (типа double )
  • Сохранить местоположение иРазмер в MainWindow_Closed
  • Загрузить и применить Местоположение и размер в MainWindow_Loaded

Образец

void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    this.Left = Properties.Settings.Default.LocationX;
    this.Top = Properties.Settings.Default.LocationY;
    this.Width = Properties.Settings.Default.WindowWidth;
    this.Height = Properties.Settings.Default.WindowHeight;
}

void MainWindow_Closed(object sender, EventArgs e)
{
    Properties.Settings.Default.LocationX = this.Left;
    Properties.Settings.Default.LocationY = this.Top;
    Properties.Settings.Default.WindowWidth = this.Width;
    Properties.Settings.Default.WindowHeight = this.Height;
    Properties.Settings.Default.Save();
}

Дополнительная информация

Я протестировал оба, WinForms и WPF.

1 голос
/ 06 января 2012

Если вы собираетесь сохранить только одно окно position и size, я бы предложил сохранить их в applicationSettings .

Если у вас есть больше настроек окна для сохранения или больше окон для управления, я бы лично предложил сохранить его в отдельном файле XML.

РЕДАКТИРОВАТЬ

Пример работы со стандартным XML

Пример LINQ to XML

Надеюсь, это поможет.

0 голосов
/ 27 сентября 2012

Я знаю, что на это уже давным-давно ответили, но это самое элегантное решение, которое я нашел в интернете после двухдневного поиска подходящего решения. Проверьте это:

http://blogs.msdn.com/b/davidrickard/archive/2010/03/09/saving-window-size-and-location-in-wpf-and-winforms.aspx

Работает как для WPF, так и для WinForms.

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