在 C# windows 窗体中制作的保存/加载控件

Posted

技术标签:

【中文标题】在 C# windows 窗体中制作的保存/加载控件【英文标题】:Save/load controls made inside C# windows forms 【发布时间】:2013-06-05 03:32:44 【问题描述】:

我正在开发一个程序,用户将图片框、标签等控件添加到组框中,我希望能够将他的工作保存到文件中,以便他以后可以打开它,我只有以前使用过xml,我想知道你的意见,你认为将控件保存到xml文件是解决这个问题的好方法吗?或者也许通过循环所有控件来通过流写入器传递所有数据?或者其他解决方案,我想知道你在这种情况下推荐什么。

提前致谢, 大卫N

【问题讨论】:

【参考方案1】:

他们说不要重新发明***,但您可以通过无数种方式做到这一点。这实际上取决于用户的风格、格式和受众。有时我喜欢在一个简单的 txt 样式文件中做所有事情,这样任何人都可以轻松地编辑信息。 XML 将使您能够更轻松地组织您的信息,这可能会更好。这真的取决于你,我会说你更舒服的任何东西。我个人会制作自己的小算法来搜索纯 txt 文件,但那是因为我没有使用 XML。

您应该创建一个仅用于处理保存和加载文件的类。

类似

       public class CustomControls
    
        //more code
        public void AddCustomControl(Control x)  
        public void RemoveCustomControl(Control x)  
        public void UndoControl()  
        public void RedoControl()  
        public void SaveControls(string file)
        public void LoadControls(string file)
        //more code
    

我认为,在您开始处理处理保存和加载的类之后,您会更清楚地知道什么会让您和最终用户更轻松。

*您还会注意到,您可能希望跟踪通过理论上的 CustomControls 类添加的自定义控件,否则您将不得不以某种方式传递它们。我不建议循环遍历所有表单控件,而是跟踪您通过 CustomControls 类动态添加的内容。这也将使您能够实现撤消和重做等功能。

【讨论】:

【参考方案2】:

如果我需要做出决定,我会尝试实现 xml,devExpress 为此使用 xml。看看下面的链接

http://documentation.devexpress.com/#WindowsForms/CustomDocument4879

例子非常好用,不知道实现起来是不是很难。

navBarControl1.SaveToXml("c:\\NavBarLayout.xml");
navBarControl2.RestoreFromXml("c:\\NavBarLayout.xml");

【讨论】:

以上是关于在 C# windows 窗体中制作的保存/加载控件的主要内容,如果未能解决你的问题,请参考以下文章

创建文件后从 Windows 窗体保存 C#

将 Windows 窗体列表框保存到文本文件 C#

如何制作一个 C# Windows 窗体应用程序,为 Windows 应用商店转换,从 Windows 开始

用vs2010制作了c#windows窗体程序,但打包时在解决方案资源管理器窗口中找不到解决方案无

C# Windows 窗体无法在 Windows10 上加载非托管 C++ DLL

c#制作飘动动画窗体