【问题标题】:Save user settings for different users in WinForms?在 WinForms 中保存不同用户的用户设置?
【发布时间】:2021-08-23 11:46:05
【问题描述】:

我想在我的 WinForms 应用程序中有一个保存偏好选项。用户选择是/否,并且可以选择保存首选项,然后会记住是/否,并且在进一步重新运行应用程序时不会弹出此类选择的表单。

我阅读了有关设置和更改的内容,但是如何为不同的用户进行设置,因为他们都会选择差异选项,而我需要保持这一点。

仅仅使用布尔变量将无济于事,因为它将是单个用户特定的。有什么建议吗?

【问题讨论】:

  • 一种选择是在Application.UserAppDataPath 中保存settings.inisettings.xml,类似于:C:\Users\<Username>\AppData\Roaming\<Company>\<Product>\<Version>(但去掉<Version> 子文件夹)。 <Company><Product> 在项目的组装信息中定义。另一种选择是将设置保存在当前用户的注册表中。
  • 感谢您的回复,这似乎也是可能的。我基本上根据他/她的偏好在客户端创建了一个文件,并将在运行时读取该文件。将其更新为答案

标签: c# winforms settings configuration-files application-settings


【解决方案1】:

(1) 在事件关闭主窗体,调用方法/动作保存结果。见How to save data when closing event happen in WinForms?

您可以将其保存到 XML 文件(或文本文件、SQL lite、SQL Server 等),流行的方式是 XML 文件。

在加载表单事件或应用程序启动初期的其他事件类型处理您的 WinForms 应用程序中的业务逻辑之前,读取 XML 文件以获取保存的结果。

(2) 您还将上期的结果保存在配置文件https://stackoverflow.com/a/453230/3728901

Properties.Settings.Default["SomeProperty"] = "Some Value";
Properties.Settings.Default.Save(); // Saves settings in application configuration file

【讨论】:

  • 谢谢!我尝试了(2)并得到了一些错误将尝试(1)建议
【解决方案2】:

因此,由于我不想要数据库,因此我在客户端创建了一个文件并将首选项保存在那里。 在运行时,我会从文件中读取,然后决定是否发送表单。

【讨论】:

    【解决方案3】:

    您可以使用模型并将使用选定的配置存储到其中,然后您应该对其进行序列化并在重新运行应用程序时为特定用户保存在数据库中,您可以获得配置并将其反序列化为模型并使用它

    【讨论】:

    • 谢谢,这似乎是一个可能的解决方案,但由于我不维护用户数据库,如果应用程序中有另一种更简单的方法,我不想为此设置,因为复杂性和开销。
    猜你喜欢
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 2010-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-14
    相关资源
    最近更新 更多