2017-05-06 30 views
-1

我发现了很多不同的方法来做到这一点,我不知道方向,我应该去...C#动态让应用程序中设置然后保存持久

我会在几个运行的应用程序个人电脑。我正在寻找一种永久保存应用程序设置列表的方法。

这个想法是,用户将能够在应用程序列表中进行选择。这些应用程序将被保存,直到用户删除它们。我需要保存应用程序名称和相应的路径。

问题是,我似乎无法将键值对值保存到Visual Studio中的新设置并让它们保持不变。我需要写一个文件来保存这些文件,我该如何去做...我应该把它们写入system.configuration,JSON或XML吗?有没有人有一个很好的演练?

+0

为了保持简单,我只需将一些JSON或XML文本文件写入运行该应用程序的计算机的驱动器即可。 – MAlvarez

回答

2

那么,有很多方法可以做到这一点。对于一种简单的方法,您可以使用XML序列化。首先创建一个代表所有要保存设置一个类,Serializable属性添加到它,比如:

[Serializable] 
public class AppSettings 
{ 
    public List<UserApp> Applications { get; set; } 
} 

[Serializable] 
public class UserApp 
{ 
    public string Path { get; set; } 
    public string Name { get; set; } 
} 

接着,下面的方法添加到它:

public static void Save(AppSettings settings) 
{ 
    string xmlText = string.Empty; 
    var xs = new XmlSerializer(settings.GetType()); 
    using (var xml = new StringWriter()) 
    { 
     xs.Serialize(xml, settings); 
     xml.Flush(); 
     xmlText = xml.ToString(); 
    } 
    string roamingPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 
    File.WriteAllText(roamingPath + @"\settings.xml", xmlText); 
} 

public static AppSettings Load() 
{ 
    string roamingPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); 

    if (!File.Exists(roamingPath + @"\settings.xml")) 
     return new AppSettings(); 

    string xmlText = File.ReadAllText(roamingPath + @"\settings.xml"); 
    var xs = new XmlSerializer(typeof(AppSettings)); 
    return (AppSettings)xs.Deserialize(new StringReader(xmlText)); 
} 

然后,保存,这样做:

AppSettings settings = new AppSettings(); 
settings.Applications = new List<UserApp>(); 

settings.Applications.Add(new UserApp { Path = @"C:\bla\foo.exe", Name = "foo" }); 

AppSettings.Save(settings); 

并加载:

AppSettings settings = AppSettings.Load(); 

您也可以编辑加载的设置并再次保存,覆盖旧的设置。

如需更多更复杂的方法,请保存到数据库中。

0

添加一个设置,使用下面的截图中显示的指令设置:

注:双击与第一箭头属性

enter image description here

然后你就可以更新在运行时像这样的值:

​​

的设置将存储在user's profile

相关问题