【问题标题】:Keping history in Winforms C++Winforms C++中的写历史
【发布时间】:2012-11-01 08:02:27
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c++ winforms visual-c++


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • @gpuguy 然后将状态写入 MDF 文件——这将是我此时的策略。
    【解决方案2】:

    您可以将 Windows 注册表与

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

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

    当表单正在加载时,您会读取值

    【讨论】:

      【解决方案3】:

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

      实现保存机制:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2021-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多