2011-01-24 34 views
2

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

即使在应用程序关闭/退出之后,仍然保持这样的状态,例如检查单选按钮&复选框,文本框中的文本,下拉列表/组合框中的选择等。

因此,用户还应该能够在稍后启动应用程序,并从第3步继续(或者他们上一次登录/退出应用程序时执行的任何步骤)。 我想这应该是可能的,因为它是与webforms应用程序。 任何想法或答案将不胜感激! :)

+2

如果你想保存到磁盘,最简单的方法就是保存进度的xml文件。如果您想要保存到数据库,请考虑使用SqlLite。 – tenor 2011-01-24 02:08:16

回答

2

简而言之:

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

看起来好像你必须在这里学习很多东西,但它会得到回报。

+0

@Daniel ....看起来很有趣。我不是那么有经验的程序员......我更多的是一名数据库开发人员,但我确实了解面向对象编程等。请问您可以详细介绍一下如何去做吧。 – Andrew 2011-01-24 02:20:02

+0

我正在考虑创建这个数据类(如你所说),并且在点击下一个按钮移动到问卷的下一步/阶段时,文本框和组合框中的文本值将被保存到字符串变量 - 在后台 - 在数据类...我怎么会做相同的复选框和单选按钮虽然。这就是你所说的''将类实例的成员变量绑定到控件''? – Andrew 2011-01-24 02:24:52

0

正如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;”保持表格的公开。

相关问题