如何保存和使用应用程序的窗口大小?

时间:2012-01-05 23:52:48

标签: c# wpf windows winforms

使用.NET 4,在关闭时保存应用程序窗口大小和位置的最佳方法是什么,并在下次运行时使用这些值启动应用程序窗口?

我不想触摸任何类型的注册表,但不知道是否有某种app.config(类似于ASP.NET应用程序的web.config),我可以用于Windows Presentation Foundation应用程序。

感谢。

3 个答案:

答案 0 :(得分:10)

描述

Windows窗体

  • 在应用程序设置中创建属性 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 :(得分:1)

如果您要保存一个窗口positionsize,我建议将其保存在applicationSettings

如果您要保存更多窗口设置,或者需要管理更多窗口,我建议将其保存在单独的XML文件中。

编辑

Working with XML standart way example

LINQ to XML example

希望这有帮助。

答案 2 :(得分:0)

我知道很久以前就已经回答了这个问题,但是,这是我在寻找一个体面的解决方案两天后在互联网上找到的最优雅的解决方案。看看这个:

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

它适用于WPF和WinForms。