基本上,当用户调整应用程序窗口的大小时,我希望再次打开应用程序时应用程序的大小保持不变.
起初我想处理SizeChanged事件并节省高度和宽度,但我认为一定有更简单的解决方案.
问题很简单,但我找不到简单的解决办法.
基本上,当用户调整应用程序窗口的大小时,我希望再次打开应用程序时应用程序的大小保持不变.
起初我想处理SizeChanged事件并节省高度和宽度,但我认为一定有更简单的解决方案.
问题很简单,但我找不到简单的解决办法.
将值保存在user.config文件中.
你需要在设置文件中创建这个值——它应该在Properties文件夹中.创造五个价值观:
double
型中的Top
个double
型中的Left
个double
型中的Height
个double
型中的Width
个bool
型Maximized
-用于保持窗口是否最大化.如果您想存储更多信息,则需要不同的类型或 struct .将前两个参数初始化为0,将后两个参数初始化为应用程序的默认大小,将最后一个参数初始化为false.
在资源初始化事件处理程序上创建一个窗口,并添加以下内容:
this.Top = Properties.Settings.Default.Top;
this.Left = Properties.Settings.Default.Left;
this.Height = Properties.Settings.Default.Height;
this.Width = Properties.Settings.Default.Width;
// Very quick and dirty - but it does the job
if (Properties.Settings.Default.Maximized)
{
WindowState = WindowState.Maximized;
}
NOTE:设置的窗口放置需要在窗口(而不是构造函数)的源初始化事件中进行,否则,如果您在第二个监视器上最大化窗口,它将始终在主监视器上最大化地重新启动,您将无法访问它.
创建窗口关闭事件处理程序并添加以下内容:
if (WindowState == WindowState.Maximized)
{
// Use the RestoreBounds as the current values will be 0, 0 and the size of the screen
Properties.Settings.Default.Top = RestoreBounds.Top;
Properties.Settings.Default.Left = RestoreBounds.Left;
Properties.Settings.Default.Height = RestoreBounds.Height;
Properties.Settings.Default.Width = RestoreBounds.Width;
Properties.Settings.Default.Maximized = true;
}
else
{
Properties.Settings.Default.Top = this.Top;
Properties.Settings.Default.Left = this.Left;
Properties.Settings.Default.Height = this.Height;
Properties.Settings.Default.Width = this.Width;
Properties.Settings.Default.Maximized = false;
}
Properties.Settings.Default.Save();
如果在应用程序关闭时,用户通过断开屏幕或更改屏幕分辨率来缩小显示区域,则此操作将失败,因此在应用这些值之前,您应该添加一项判断,确保所需的位置和大小仍然有效.