1

我有一个使用 C++(在 VS 2010 中开发)以 winform 制作的应用程序。GUI 具有某些文本字段、单选按钮、复选框等。要操作该软件,必须填写这些字段/按钮/框等。

大约有 50 种不同的 GUI,每个 GUI 中大约有 20 个字段。

我希望在应用程序关闭并重新启动后,此字段中的最新参数会自动填写,因此用户无需再次重新输入所有这些值。

实现这一目标的最简单和最简单的方法是什么?

4

3 回答 3

1

您可以将 Windows 注册表与

WindowsFormName(子项)---------> ControlName(子项)-----> ControlValue(子项)

当窗体关闭时,您将每个控件的值保存在注册表中

加载表单时,您会读取值

于 2013-01-11T00:07:05.643 回答
1

这最好使用 MVC 模式解决,其中模型包含已填充的数据。视图包含它将呈现的方式(例如在 Winforms 中),最后是控制器,除了执行业务逻辑之外,它还需要做一些工作(用于保存状态)。

我更喜欢为此使用序列化。您可以序列化模型字段并将它们读回(仅需要的字段)。

如果您不喜欢序列化,可以尝试写入易于修改的 INI 文件。

第三,您可以使用数据库mdf文件来存储状态。

但要做好这一切,您需要修改应用程序以使用 MVC 架构。

于 2012-11-01T08:07:51.280 回答
0

如果您对快速而肮脏的解决方案感到满意,您可以试试这个:

实现保存机制:

  1. 迭代所有表单控件(如果有面板或其他容器,则递归)
  2. 如果控件是编辑的(或其他保存数据的类型),将控件文本连同他的名字一起保存
  3. 存储名称、值对(例如 INI 文件)

实现加载机制。这假设值之间没有依赖关系(如果有自动计算字段,请不要保存它们)

  1. 从存储中加载值(如果选择文件,文件名可以是表单名)
  2. 迭代所有表单控件,如果在加载的数据中找到它的名称,则设置值

一旦实施,此方法可用于所有表单,并且可以处理添加/删除控件。但是,如果有业务规则,使用 MVC 方法并序列化模型可能会更好。

于 2012-11-01T09:23:54.163 回答