2011-05-03 39 views
0

我看了其他帖子,但這個問題與他們不同。存儲C#的設置?

我想存儲3個數據值(類型,字符串,字符串),我將如何能夠做到這一點?

它的一個例子是:String,「lol」,「lol2」。

我已經嘗試了資源設置和設置設置,但都沒有工作。他們都說這個名字不能加倍。

這是Windows窗體

任何幫助,將不勝感激謝謝。

而且我必須按這個順序來做。因爲當有人從我的下拉列表中選擇方法「字符串」時,它會顯示包含「lol」的字符串類型的所有內容。然後在選擇'lol'字符串後lol2應該放在文本框中

+2

爲什麼你不能使用兩個變量?如果它必須在一箇中,請將其存儲爲不允許該人存儲的分隔符,然後對其進行解析以供顯示。 – 2011-05-03 02:16:49

+0

該人可能會放入「:」或其他字符,字符串中允許所有字符 – Eric 2011-05-03 02:20:31

+1

然後創建自己的分隔符,如[ - $ mydelimiter $ - ],這是非常愚蠢的,沒有人會真正進入。 – Phill 2011-05-03 02:22:56

回答

0

Settings.settings的作品,但它聽起來像你會更好地爲這種類型的數據做自己的序列化格式。請記住Settings.settings類適用於微不足道的用戶和應用程序設置。 ,複雜或大型結構可能會改變,應使用特定於應用程序的格式。使用settings.settings作爲窗口位置和顏色首選項(作爲示例)

+0

請參閱我的答案,瞭解序列化您自己的設置文件的示例。 – 2011-05-03 02:57:32

0

查找IsolatedStorage類,這個是sux =) 但是如果你使用的是Silverlight,那麼你可以使用IsolatedStorageSettings類真棒!

0

另一種選擇是創建和管理自己的設置文件。這是一個讓你開始的樣本。首先創建一個類來表示要存儲的數據,即CustomDataStoreItem。然後創建另一個類來保存這些CustomDataStoreItems的集合:

[Serializable()] 
class CustomDataStore 
{ 
    public CustomDataStore() 
    { 
     //This is required by serialization 
    } 
    private List<CustomDataStoreItem> _items; 

    public List<CustomDataStoreItem> Items 
    { 
     get 
     { 
      if (_items == null) 
       _items = new List<CustomDataStoreItem>(); 
      return _items; 
     } 
     set { _items = value; } 
    } 

    public void LoadSettings(string SettingsFileName) 
    { 
     if (File.Exists(SettingsFileName)) 
     { 
      BinaryFormatter bf = new BinaryFormatter(); 
      FileStream fs = File.OpenRead(SettingsFileName); 
      CustomDataStore ds = (CustomDataStore)bf.Deserialize(fs); 
      fs.Close(); 
      _items = ds.Items; 
     } 
    } 
    public void SaveSettings(string SettingsFileName) 
    { 
     if (File.Exists(SettingsFileName)) 
      File.Delete(SettingsFileName); 
     BinaryFormatter bf = new BinaryFormatter(); 
     FileStream fs = File.Create(SettingsFileName); 
     bf.Serialize(fs, this); 
     fs.Close(); 
    } 
} 
[Serializable()] 
class CustomDataStoreItem 
{ 
    public CustomDataStoreItem() 
    { 
     //This is required by serialization 
    } 
    public string Type { get; set; } 
    public string String1 { get; set; } 
    public string String2 { get; set; } 
} 

現在你可以使用這個類的,像這樣:

要保存設置CustomDataStoreItems添加到收藏CustomDataStore.Items。然後調用SaveSettings方法:

CustomDataStore ds = new CustomDataStore(); 
CustomDataStoreItem dsi = new CustomDataStoreItem(); 
dsi.Type = "String"; 
dsi.String1 = "lol"; 
dsi.String2 = "lol2"; 
ds.Items.Add(dsi); 
ds.SaveSettings(@"C:\Users\Public\Test.bin"); 

你可以背出加載設置是這樣的:

CustomDataStore ds = new CustomDataStore(); 
ds.LoadSettings(@"C:\Users\Public\Test.bin"); 
foreach (CustomDataStoreItem dsi in ds.Items) 
{ 
    Console.WriteLine(string.Format("{0} {1} {2}", dsi.Type, dsi.String1, dsi.String2)); 
}