繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM