2017-05-06 77 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

相關問題