【问题标题】:Saving the forms desktop location and size保存表单桌面位置和大小
【发布时间】:2012-11-26 07:41:45
【问题描述】:

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

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

因此,我在 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);
}

【问题讨论】:

  • 供将来参考:请不要张贴没有逗号、句号或段落的文字墙。结构化您的文本,使其易于阅读。

标签: c# winforms


【解决方案1】:

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

  • 在设计器中打开您的表单
  • 转到表单属性Data > (Application Settins)
  • 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>

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

【讨论】:

  • 在此之前我一直在使用表单关闭,但是如果在没有先关闭程序的情况下直接关闭电脑,则不会执行代码,因此不会更改表单大小和位置
猜你喜欢
  • 1970-01-01
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 2013-05-18
相关资源
最近更新 更多