如何保存复选框,文本框和…在c#中关闭程序后

本文关键字:关闭程序 文本 何保存 保存 复选框 | 更新日期: 2023-09-27 17:51:22

在我用Visual Studio 2010制作并使用WinForms的c#程序中,我希望该程序保存一些复选框和文本框的状态,以便下次程序将被加载时它们被选中或未选中作为上次运行的状态。文本框内的字符串也是如此…

实现这一目标的正确方法是什么?在。net中有内置的东西吗?任何提示和代码片段将不胜感激!

谢谢

如何保存复选框,文本框和…在c#中关闭程序后

您可能想要查看在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?因为二进制更快,用户不需要进入这些文件。