我正在使用winforms,我想在用户更改时保存表单的位置和大小。我找到了一些有用的代码,并将其放在关闭事件和表单加载事件的表单中,以分别保存和加载大小和位置。
但是,当用户在未关闭程序的情况下直接关闭PC时,不会保存更改的大小和位置。
因此,我在更改的大小和位置更改事件中使用了相同的代码,但它不起作用,并且程序重新启动时不会更改大小和位置。
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);
}
答案 0 :(得分:3)
您可以提供User
范围的应用程序设置数据绑定来存储这些值。
Data > (Application Settins)
group Location
(和ClientSize
)属性添加数据库(范围用户)FormClosing
事件保存已更改的属性Properties.Settings.Default.Save();
这将为您的应用程序文件的每个用户(%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>
BTW 我认为FormClosed
事件更适合保存应用程序设置。