在Winforms App中实现SAVE和QUIT

时间:2011-01-24 02:03:31

标签: c# winforms visual-studio

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

即使在应用程序关闭/退出后,类似于支持WINFORMS控件的状态(例如,已检查的radiobuttons和复选框,文本框中的文本,下拉列表/组合框中的选项等)仍保持不变。

因此,用户还应该能够在以后启动应用程序并继续执行步骤3(或者他们所处的任何步骤,他们最后一次注销/退出应用程序)。 我想这应该是可能的,使用webforms应用程序。 任何想法或答案将不胜感激!! :)

2 个答案:

答案 0 :(得分:2)

简而言之:

  1. 为您的答案创建数据类。
  2. 将类实例的成员变量绑定到控件。
  3. 在应用程序退出时,序列化您用于XML文件(或二进制或其他)的类实例。
  4. 下次加载时,反序列化数据,绑定将完成剩下的工作。
  5. 看起来你可能需要在这里学到很多东西,但它会得到回报。

答案 1 :(得分:0)

丹尼尔指出数据绑定可能是最佳选择。或者,如果字段不是太多,您仍然可以在加载和保存时手动分配。 (没有人会因为简单的任务而使用简单的代码来射击你)

这是一篇关于如何解决数据绑定的文章: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;”保持表格开放。