winform有什么好的方法保存窗体状态? 项目里,有容器和不同的窗体。有什么好的方法去保存窗体的状态?例如:TextBox的Text属性,CheckBox的Checked属性等等。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 序列化和反序列化,很多控件好像不支持序列化,不过思想差不多,推出的时候用XML保存状态,加载的时候读取状态 如果你只想保存页面上每一个控件的值,可以写两个方法,一个SetValue(string controlID,string value),一个string GetValue(Control control)。然后在这两个方法里实现所有你页面上用到的类型的控件,如:if(control is TextBox){……}else if(control is CheckBox){……}如果想保存页面,就迭代Controls属性,用GetValue方法取值,生成一个控件ID,和Value的字典。如果想初始化页面,就迭代之前生成的字典,用SetValue方法赋值。 可以在窗体里对Controls循环处理,每找一个控件,按类型来保存其属性值到Xml文件中。 推荐写到XML文件中,这样不管怎么变,都能知道状态了 支持你的思路。至于你说好多控件不支持序列化,其实不是不支持,你让它继承相应的接口就可以了。要充分利用面向对象编程撒。PS:我一般用JSON作序列化与反序列化。 请教几个开发过程中的问题?...................... 水晶报表的一点小问题 周末交作业了,50分求助:“未将对象引用设置到对象的实例” 项目设计方案 SetStyle 的说明. 求助如果制作 视频的上传和自动生成缩略图功能。 请教:c#读取xml文档的异常处理问题 关于数据类型转换问题 richTextBox的拖放问题,它的拖放事件我怎么没看到,TextBox都有一个拖放类的事件 求C#读写dwg文件(不使用AntoCAD环境)的开源插件或代码! .net向存储过程传递datetime类型参数有问题 怎样实现绘制在一个范围内,超出的范围不绘制?
很多控件好像不支持序列化,不过思想差不多,推出的时候用XML保存状态,加载的时候读取状态
然后在这两个方法里实现所有你页面上用到的类型的控件,如:
if(control is TextBox)
{
……
}
else if(control is CheckBox)
{
……
}
如果想保存页面,就迭代Controls属性,用GetValue方法取值,生成一个控件ID,和Value的字典。
如果想初始化页面,就迭代之前生成的字典,用SetValue方法赋值。
支持你的思路。至于你说好多控件不支持序列化,其实不是不支持,你让它继承相应的接口就可以了。要充分利用面向对象编程撒。PS:我一般用JSON作序列化与反序列化。