gpt4 book ai didi

c# - 序列化 MDI Winforms 以实现持久性

转载 作者:太空宇宙 更新时间:2023-11-03 14:30:11 26 4
gpt4 key购买 nike

我的项目基本上是一个 MDI Winform 应用程序,用户可以在其中通过添加各种控件和更改布局来自定义界面。我希望能够为每个用户保存应用程序的状态。

我做了很多搜索并找到了这些:

How to auto save and auto load all properties in winforms C#?

Save WinForm or Controls to File

基本上据我了解,最好的方法是将数据序列化为 XML,但是 winform 控件不可序列化,因此我会使用代理类:

http://www.codeproject.com/KB/dotnet/Surrogate_Serialization.aspx

现在,我是否需要为我的每个控件编写一个代理类?我需要编写某种递归算法来保存我的所有控件,实现此目的的最佳方法是什么?然后我将如何恢复所有窗口,我应该为此使用纪念品设计模式吗?如果以后要实现多用户,是不是应该用Nhibernate把所有的对象数据存到一个数据库里?我仍在努力解决这个问题,如果有人有任何经验或建议,我将不胜感激,谢谢

最佳答案

您不想序列化实际的控件实例。它们应该与它们所在的 Form 一起创建和销毁。而是看看您让用户自定义的内容。布局和位置?很好,保存每个控件的顶部和左侧坐标以及控件标识符。你让用户添加新控件吗?将它们的 ID 与类型标识符一起保存,以便在需要重新加载时您能够在它们之前的位置重新创建控件。

无论您使用 XML 还是其他格式,都没有最佳方法或最佳实践,请选择对您的项目有意义的格式。 XML 恰好是一种易于使用的格式,并在 .Net Framework 中提供了强大的支持。

关于c# - 序列化 MDI Winforms 以实现持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2837589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com