【问题标题】:Preserve data between application executions在应用程序执行之间保留数据
【发布时间】:2020-12-16 09:42:37
【问题描述】:

我有一个带有一些文本框的应用程序。我的用户填充文本框并运行一些方法,当他们关闭应用程序数据时(通常)会丢失。

我想保留几个文本框的值和一些局部变量。使用database 不值得,而且简单的.txt 文件不够干净,有没有其他简单而简短的方法可以在应用程序运行之间存储少量数据?

我不确定,但听说过一些关于资源文件的消息,它们适合这种情况吗?

【问题讨论】:

标签: c# .net winforms


【解决方案1】:

最简单的方法是将你的文本框绑定到application settings:

  • 选择要保留的 texbox
  • 转到属性>数据>(应用程序设置)
  • 将应用程序设置绑定添加到 Text 属性
  • 关于FormClosed事件保存应用设置

保存设置:

private void Form_FormClosed(object sender, FormClosedEventArgs e)
{
    Settings.Default.Save();
}

下次用户启动您的应用程序时,将从用户特定文件加载设置,并且文本框将填充与用户上次关闭应用程序之前相同的数据。

您还可以在应用程序设置中存储局部变量,但您必须手动为其添加设置,并在应用程序启动时手动读取该设置:

  • 打开项目> Settings.settings下的Properties文件夹
  • 添加您要存储的设置(例如 MyCounter)
  • 设置 MyCounter 类型、范围和默认值(例如 int、User、0)
  • 将设置读取到您的局部变量var x = Settings.Default.MyCounter
  • 在表单关闭保存设置Settings.Default.MyCounter = x 就在调用Settings.Default.Save() 之前

【讨论】:

  • @mahditahsildari 是的,这是一个 winform 的东西 Data 是一个属性类别。如果您正在寻找属性名称,那么您需要(ApplicationSettings) 属性
  • 我终于明白你的意思了 :) 太好了,这就是我要找的东西,我以前看过,但在我的大脑后院丢失了图片。
  • 当你想保存到它时,确保设置的范围设置为用户。当它设置为应用程序时,您不能。
【解决方案2】:

有几个选项,但对于大多数选项,您将在某处放置一个文件,无论是文本文件、资源/配置还是二进制文件。

使用设置是一种选择:http://www.codeproject.com/Articles/17659/How-To-Use-the-Settings-Class-in-C

也可以走序列化路线:http://msdn.microsoft.com/en-us/library/vstudio/et91as27.aspx

或者您也可以查看 MongoDB 等 noSQL 数据库:http://www.mongodb.org/

【讨论】:

    【解决方案3】:

    您有以下选择

    1. 一个本地 Microsoft Access 数据库,可以存储小空间。

    2. 使用字典,序列化/反序列化到文件系统。

    3. Windows 注册表。

    【讨论】:

    • 对不起,我说我不想使用数据库,也不想使用文件系统,并且注册表也被拒绝回答 lexu。
    • @mahditahsildari:好吧,如果你排除数据库、注册表文件系统 - 剩下的选项不多....
    • 抱歉,如果您想保存可以稍后重新加载的用户设置,您需要将其存储在某个地方。这是哪种应用程序?
    • 我的意思是我想要在 asp.net 中的 web.config 之类的东西,它可以通过编程方式获得,我不需要编写 I/O 代码和打开/关闭文件。谢谢
    • 好吧,如果是基于 Windows 的应用程序,您也可以使用 ConfigurationManager 类写入 App.Config,如果您考虑文件系统访问,Web.Config 也存储在硬盘上,顺便说一句。
    【解决方案4】:

    假设您使用的是 Windows(如标签所示),您是否考虑过注册表?

    【讨论】:

    • 是的,我在 Windows 上,是的,我考虑过注册表,但由于某些原因,我希望数据位于我的应用程序附近(就像应用程序的其他文件一样)
    猜你喜欢
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多