在我用Visual Studio 2010制作并使用WinForms的C#程序中,我希望程序保存一些复选框和文本框的状态,以便下次加载程序时,它们会被检查或取消选中,作为最后一次运行的状态。也与文本框等内的字符串相同......
实现这一目标的正确方法是什么? .NET中有内置的东西吗?任何提示和代码片段都会受到欢迎!
由于
答案 0 :(得分:7)
您可能希望在FormClosing事件期间查看UI中的相关值,然后将其保存到用户设置中。
查看:http://codehill.com/2009/01/saving-user-and-application-settings-in-winforms/
答案 1 :(得分:5)
我会将值绑定到用户设置,并保存配置OnClose事件。
答案 2 :(得分:2)
执行此操作的一种方法是使用XML配置文件并对其进行序列化:
<强> ConfigManager.cs 强>
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
namespace MyApplication
{ [ Serializable() ]
public class ConfigManager
{
private int removeDays = 7;
public ConfigManager() { }
public int RemoveDays
{
get
{
return removeDays;
}
set
{
removeDays = value;
}
}
}
您应用中的某个地方
private ConfigManager cm;
private XmlSerializer ser;
...
然后你必须加载配置:
private void LoadConfig()
{
try
{
cm = new ConfigManager();
ser = new XmlSerializer(typeof(ConfigManager));
filepath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + cm.filepath;
if (File.Exists(filepath))
{
FileStream fs = new FileStream(filepath, FileMode.Open);
cm = (ConfigManager)ser.Deserialize(fs);
// do something
}
} catch (Exception ex) { }
}
要保存它:
XmlSerializer ser;
ConfigManager cm;
...
private void saveConfig()
{
try {
cm.RemoveDays = 6;
TextWriter tw = new StreamWriter(filepath, false);
ser.Serialize(tw, cm);
tw.Close();
} catch (Exception ex)
}
答案 3 :(得分:1)
你提出了非常广泛的问题。有两种方法可以看待它。
1)如果您需要保持应用程序级别配置,最好的办法是使用Application Settings。可以序列化用户使用您的应用程序完成的程序设置,并在程序重新启动后恢复它们。这适用于WinForms和WPF:
2)如果您需要用户级持久性,则需要user settings。
此外,您可以创建实现存储所需的所有配置属性的自定义类。
实施ISerializable并将其标记为[Serializable]。您可以将其标记为[Serializable],但如果您将来添加新属性,则会遇到反序列化问题。
添加版本属性。
添加两个静态方法:加载和保存。这些方法使用IsolatedStorage将配置类反序列化/序列化为磁盘。您可以使用任何类型的序列化 - 我使用二进制。为什么不用XML?因为二进制文件更快,用户永远不需要进入这些文件。我曾经为.net 2.0做过这个。