如何在文本文件中存储C#表单元素属性?

时间:2009-09-11 17:04:50

标签: c# .net-2.0

如何将C#表单元素属性(例如文本框的位置)存储在文件中,例如。文本文件?那么当用户打开表单时,数据会从文件中读取到表单中吗? 我被告知我可以使用XML配置文件...有人可以告诉我如何在C#中做到这一点吗?

3 个答案:

答案 0 :(得分:3)

如果您不需要该文件是人类可读/可编辑的,则更容易在二进制文件中执行此操作。

创建一个类或结构来保存要保存到文件中的所有数据,使用[Serializable]属性标记它,然后使用以下代码。

   using (Stream fs = new FileStream(filSpec, FileMode.Create,
                    FileAccess.Write, FileShare.None))
       (new BinaryFormatter()).Serialize(fs, YourClassOrStruct);

要从文件中取回课程,

   using (FileStream strm = new FileStream(filSpec,
                        FileMode.Open, FileAccess.Read))
   {
       IFormatter fmtr = new BinaryFormatter();
       object o = fmtr.Deserialize(strm);
       if (!(o is YourClassOrStruct)) return null;
       return o as YourClassOrStruct;
   }

使用XmlSerializer也可以,但是如果类包含任何集合,列表或其他奇怪的东西,它会有点棘手

答案 1 :(得分:2)

这可能取决于您要保存的有关给定表单元素属性的详细程度。例如,如果您只想存储6个固定值,大致对应于3个表单元素的X,Y,那么使用C#的内置设置可以很好地工作 - Using Settings in C# (MSDN)

另一方面,如果要保留非固定数量的表单元素的确切状态,则可以使用更复杂的路径并序列化每个表单元素并以此方式存储它。这很快就会变得非常复杂。只要看一眼这些,你就会明白我的意思 -

Serializing controls to an external file

Serialization in WCF

答案 2 :(得分:0)

您无需手动管理文件或手动滚动任何序列化代码。在WinForms应用程序中,我使用Properties.Settings存储用户选择的主题等内容。它们非常易于使用,我喜欢它们,因为它们可以强类型化。

以下是关于如何操作的blog post

您还可以通过“设置”存储自定义类型/类。可以想象,您可以使用一个单独的类来反映您要跟踪的各种表单元素,然后将其存储在用户设置中。如果元素数量不同,您可以始终使用字典或列表。