保存/加载c#窗体中的控件

本文关键字:控件 窗体 加载 保存 | 更新日期: 2023-09-27 18:17:01

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

提前感谢,DavidN

保存/加载c#窗体中的控件

他们说不要重新发明轮子,但你可以用无数种方法做到这一点。这实际上取决于风格、格式和用户的受众。有时我喜欢在一个简单的txt样式文件中做任何事情,这样任何人都可以很容易地编辑信息。XML将为您提供更容易组织信息的能力,这可能会更好。这真的取决于你,我会说任何你觉得更舒服的。我个人会制作自己的小算法来搜索纯文本文件,但那是因为我不使用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类动态跟踪添加的内容。这还将使您能够实现诸如撤销和重做之类的功能。

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

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

这个例子很容易使用,但我不知道是否很难实现。

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