如何保存复选框,文本框和…在c#中关闭程序后
本文关键字:关闭程序 文本 何保存 保存 复选框 | 更新日期: 2023-09-27 17:51:22
在我用Visual Studio 2010制作并使用WinForms的c#程序中,我希望该程序保存一些复选框和文本框的状态,以便下次程序将被加载时它们被选中或未选中作为上次运行的状态。文本框内的字符串也是如此…
实现这一目标的正确方法是什么?在。net中有内置的东西吗?任何提示和代码片段将不胜感激!
谢谢
您可能想要查看在FormClosing事件期间从UI读取相关值,然后将它们保存到用户设置中。
请看:http://codehill.com/2009/01/saving-user-and-application-settings-in-winforms/
我会将值绑定到用户设置,并保存OnClose事件的配置
一种方法是使用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)
}
你问的问题很宽泛。我们可以从两方面来看待这个问题。
1)如果需要持久化应用程序级别的配置,最好的选择是使用应用程序设置。可以序列化用户使用应用程序所做的程序设置,并在程序重新启动后恢复它们。这适用于WinForms和WPF:
2)如果需要用户级持久性,则需要用户设置。
同样,您可以创建自定义类来实现存储您需要的所有配置属性。
实现isserializable并标记为[Serializable]。你可以把它标记为[Serializable],但是如果你将来添加新的属性,你就会遇到反序列化的问题。
添加Version属性
增加两个静态方法:Load和Save。这些方法使用IsolatedStorage将配置类反序列化/序列化到磁盘。您可以使用任何类型的序列化—我使用二进制。为什么不是XML?因为二进制更快,用户不需要进入这些文件。