[英]How to save state of checkbox, textbox and … after closing a program in c#
在我使用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)如果您需要用户级别持久性,则需要用户设置 。
此外,您可以创建实现的自定义类,以存储所需的所有配置属性。
实现ISerializable并将其标记为[Serializable]。 您可以将其标记为[Serializable],但如果您将来添加新属性,则会遇到反序列化问题。
添加版本属性。
添加两个静态方法:加载和保存。 这些方法使用IsolatedStorage将配置类反序列化/序列化为磁盘。 您可以使用任何类型的序列化 - 我使用二进制。 为什么不用XML? 因为二进制文件更快,用户永远不需要进入这些文件。 我曾经为.net 2.0做过这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.