0

我正在使用 winforms,并且我想在用户更改时保存表单的桌面位置和大小。我找到了一些有用的代码并将其放入表单关闭事件和表单加载事件中,以分别保存和加载大小和位置。

但是,当用户直接关闭 PC 而不先关闭程序时,不会保存更改的大小和位置。

因此,我在 size changed 和 location changed 事件中使用了相同的代码,但它不起作用,并且在程序重新启动时大小和位置没有改变。

private void frmScopeStatus_SizeChanged(object sender, EventArgs e)
{
    Application.UserAppDataRegistry.SetValue("WindowState", this.WindowState);
    Application.UserAppDataRegistry.SetValue("WindowSizeH", this.Size.Height);
    Application.UserAppDataRegistry.SetValue("WindowSizeW", this.Size.Width);
    Application.UserAppDataRegistry.SetValue("LocationX", this.DesktopLocation.X);
    Application.UserAppDataRegistry.SetValue("LocationY", this.DesktopLocation.Y);
}

 private void frmScopeStatus_LocationChanged(object sender, EventArgs e)
{
    Application.UserAppDataRegistry.SetValue("WindowState", this.WindowState);
    Application.UserAppDataRegistry.SetValue("WindowSizeH", this.Size.Height);
    Application.UserAppDataRegistry.SetValue("WindowSizeW", this.Size.Width);
    Application.UserAppDataRegistry.SetValue("LocationX", this.DesktopLocation.X);
    Application.UserAppDataRegistry.SetValue("LocationY", this.DesktopLocation.Y);
}
4

1 回答 1

3

您可以提供范围的应用程序设置数据绑定User来存储这些值。

  • 在设计器中打开您的表单
  • 转到表单属性Data > (Application Settins)
  • Location为(和ClientSize)属性(范围用户)添加数据绑定
  • 事件FormClosing保存更改的属性Properties.Settings.Default.Save();

这将为您的应用程序文件 (at %SYSTEMDRIVE%/Users/{username}/AppData/Local/CompanyName/AppName) 的每个用户创建用户设置,这些用户设置将在应用程序启动时应用:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <userSettings>
        <AppName.Properties.Settings>
            <setting name="FormLocation" serializeAs="String">
                <value>345, 234</value>
            </setting>
            <setting name="FormSize" serializeAs="String">
                <value>458, 555</value>
            </setting>
        </AppName.Properties.Settings>
    </userSettings>
</configuration>

顺便说一句,我认为FormClosed事件更适合保存应用程序设置。

于 2012-11-26T08:01:10.010 回答