如何序列化和反序列化表单?

Maw*_*awg 0 vb.net serialization winforms

如何序列化和反序列化我的主窗体(及其控件,子控件,它们的值等)?


编辑,澄清.目前,我正在将每个控件的当前值逐个写入.INI文件,并在下次运行程序时将其读回.每次添加新控件时,我都要记得更新保存/加载.INI代码.

我只是想知道我是否可以在一个调用中执行它,或者是一个简单的for循环迭代窗体上的所有控件.

顺便说一句,我只使用简单的控件,如编辑框,单选按钮,组合框,checkd列表框,我最复杂的是数据网格,但即使这样也没有链接到数据库.


接受的答案"不能.我可能会按照自己的方式编写自己的代码......

对于每个子控件(recursivley)

 if conrol is editbox ...

 if control is radiobutton ...

 if ... etc
   write control name to .ini file
   write control "value" to .ini file
Run Code Online (Sandbox Code Playgroud)

也许以后添加左/上/高/宽/启用/可见等,不是它的控制名称,它的"值"就足够了(文本,值,行,检查?等)

kbr*_*ton 6

对于序列化.NET表单和控件没有开箱即用的支持.控件未标记[Serializable]属性.

我认为大多数困难都围绕着.NET控件,它们本身就是原生Win32控件的包装器.看来,将原生状态保持为XML似乎是不可行的.

也许有人写过自定义序列化器; 如果没有,你可能需要自己动手.

编辑:

我在专家交流中发现了令人沮丧的接受答案:

您必须实现ISerializable或IXmlSerializable才能执行类似的操作(取决于您希望如何序列化表单).这不是微不足道的.