2009-12-18 82 views
1

我正在用C#編寫程序。該程序控制一個物理濾光輪,它具有可互換的輪子A至H.每個輪子可容納8個濾光片。我希望用戶能夠爲每個輪子中的每個過濾器存儲友好名稱(共64個)。該設備和程序能夠識別車輪ID(A-H)和過濾器位置(1-8),因此存儲這64個名稱並能夠通過ID和POS引用它們的最佳方式是什麼。我可以爲每個用戶創建一個用戶設置,但是有兩個問題:1)登錄到機器上的每個用戶的名稱都不相同(我認爲),以及2)爲了以編程方式訪問特定名稱我必須使用一個巨大的病例陳述。或者有沒有辦法通過名稱訪問設置?喜歡這個..?按名稱訪問程序設置

char WheelID = 'A'; 
int FilterPos = 4; 
NewName = "FriendlyName"; 

string SettingIWant = WheelID.ToString() + FilterPos.ToString(); 

Properties.Settings[SettingIWant].Text = NewName; 

回答

2

好吧,我只是愚蠢和忽視這種方式訪問​​設置...

string SettingToChange = WheelID.ToString() + Position.ToString(); 
      Settings1.Default[SettingToChange] = NewName; 
      Settings1.Default.Save(); 

它工作得很好。唯一的問題是,每個用戶的儲值不會相同,但他們將只需要處理!

0

當然有。只需覆蓋[]運算符。

1

那麼,你可以採取數據庫方法。

「內存」解決方案,將是字典。

char WheelID = 'A'; 
int FilterPos = 4; 
NewName = "FriendlyName"; 

string SettingIWant = WheelID.ToString() + FilterPos.ToString(); 
Dictionary<string, string> properties = new Dictionary<string, string>() 
properties.Add(SettingIWant, NewName); 

螞蟻那麼你用括號語法

properties[SettingIWant] 
+0

但是沒有數據庫我不能在應用程序退出後存儲這些字典條目,除非我使用設置正確嗎? – PICyourBrain 2009-12-18 20:55:47

+0

使用適當的權限,您可以將名稱關聯寫入文本文件。如果你想完全符合流行詞,你可以使用XML。但我不會。 – 2009-12-18 21:04:27

+0

其實,我相當肯定你可以添加一個Dictionary 類型的對象到一個設置文件中。我在過去添加了自定義對象,所以它確實應該起作用。 – 2009-12-18 21:14:23

0

OK可以訪問數據。我只做了一些最低限度的研究,這是我認爲你想要做的。

首先,執行Rodrigo Garcia的Dicitonary事件,除了使用System.Collections.Specialized.StringDictionary。這是可以添加到設置文件的類型之一。

設置您的應用程序設置時,在類型下選擇「瀏覽...」(如果您沒有在列表中看到它)。

並確保您總是將更改寫出來,如果集合更改!