如何将C#表单元素属性(例如文本框的位置)存储在文件中,例如。文本文件?那么当用户打开表单时,数据会从文件中读取到表单中吗? 我被告知我可以使用XML配置文件...有人可以告诉我如何在C#中做到这一点吗?
答案 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)
另一方面,如果要保留非固定数量的表单元素的确切状态,则可以使用更复杂的路径并序列化每个表单元素并以此方式存储它。这很快就会变得非常复杂。只要看一眼这些,你就会明白我的意思 -
答案 2 :(得分:0)
您无需手动管理文件或手动滚动任何序列化代码。在WinForms应用程序中,我使用Properties.Settings存储用户选择的主题等内容。它们非常易于使用,我喜欢它们,因为它们可以强类型化。
以下是关于如何操作的blog post。
您还可以通过“设置”存储自定义类型/类。可以想象,您可以使用一个单独的类来反映您要跟踪的各种表单元素,然后将其存储在用户设置中。如果元素数量不同,您可以始终使用字典或列表。