【问题标题】:Implementing SAVE AND QUIT in Winforms App在 Winforms App 中实现 SAVE AND QUIT
【发布时间】:2011-01-24 02:03:30
【问题描述】:

我正在使用 Visual Studio 在 C#.net 3.5 中构建 Winforms 应用程序。它本质上是一个问卷调查。问题是我希望用户能够填写例如9 个步骤中的前 3 个步骤(问卷的),并且能够保存和退出应用程序。

有点像坚持 WINFORMS 控件的状态(例如,选中的单选按钮和复选框、文本框中的文本、下拉列表/组合框中的选择等)即使在应用关闭/退出后仍然如此。

因此,用户还应该能够在以后启动应用程序并从第 3 步(或他们执行的任何步骤,他们上次注销/退出应用程序的时间)继续。 我想这应该可以通过 webforms 应用程序实现。 任何想法或答案将不胜感激!! :)

【问题讨论】:

  • 如果要保存到磁盘,最直接的方法是保存进度的xml文件。如果您想保存到数据库,请考虑使用 SqlLite。

标签: c# winforms visual-studio


【解决方案1】:

简而言之:

  1. 为您的答案创建一个数据类。
  2. 将类实例的成员变量绑定到控件。
  3. 在应用退出时,将您使用的类实例序列化为 XML 文件(或二进制文件或其他文件)。
  4. 在下次加载时,反序列化数据,然后绑定将完成剩下的工作。

看起来你必须在这里学习很多东西,但它会有所回报。

【讨论】:

  • @Daniel....看起来很有趣。我不是一个经验丰富的程序员......我更像是一个数据库开发人员,但我确实了解 OO 编程等。你能否详细说明我将如何去做。
  • 我正在考虑创建这个数据类(如你所说),然后单击下一步按钮移动到问卷的下一步/阶段,文本框和组合框中的文本值将被保存到字符串变量 - 在后台 - 在数据类中......不过,我如何为复选框和单选按钮做同样的事情。这就是您所说的“将类实例的成员变量绑定到控件”的意思吗??
  • @Daniel...我该如何执行上述建议的第 3 步和第 4 步??
  • @Tenor....感谢您的回复。是的,但我真的很想尽可能避免为这个特定的应用程序使用数据库。 :)
  • @Andrew - 查看 BinaryFormatter,并围绕它进行采样。或者 - XmlSerializes 和特定示例。
【解决方案2】:

正如 Daniel 指出的那样,数据绑定可能是要走的路。或者,如果字段不多,您仍然可以在加载和保存时进行手动分配。 (没有人会因为你使用简单的代码完成简单的任务而开枪)

这是一篇关于如何解决数据绑定的文章:http://www.15seconds.com/issue/040614.htm
这是一篇很好的文章,详细介绍了数据绑定:http://www.akadia.com/services/dotnet_databinding.html

序列化是一种将对象变成字符串/字节流/任何东西的方法。例如,您可以将对象保存为 xml 文件并稍后将其加载回来。这是非常容易使用。你可以在这里阅读更多信息:http://www.switchonthecode.com/tutorials/csharp-tutorial-serialize-objects-to-a-file

序列化示例:

Stream stream = File.Open("filename.bin", FileMode.Create);
BinaryFormatter bFormatter = new BinaryFormatter();
bFormatter.Serialize(stream, objectToSerialize);
stream.Close();

如果您想将其保存为 XML,您只需使用 XmlFormatter。

提示:您可以处理 Form_Closing 事件来查询用户是否要保存/退出。设置“e.Cancel = true;”保持表单打开。

【讨论】:

  • @all...您对我的问题的回答非常有用。我的 Windows 窗体应用程序运行良好(在序列化方面......我选择了 XML 序列化)。非常感谢大家,尤其是 TEDD HANSEN
猜你喜欢
  • 2022-12-01
  • 1970-01-01
  • 2022-01-14
  • 2020-05-17
  • 2011-03-26
  • 1970-01-01
  • 2020-10-15
  • 2020-12-09
  • 1970-01-01
相关资源
最近更新 更多