2011-03-15 80 views
0

我想在My.Settings中存儲常規數組。不是ArrayList,不是StringCollection,只是一個字符串Array。這可以做到嗎?如果是這樣,它是如何完成的?我似乎無法在Visual Studio中的設置設計器中找到字符串數組數據類型。vb.NET嘗試在My.Settings中存儲陣列

回答

0

我不認爲您可以在My.Settings中存儲常規數組。 My.Settings僅用於「設置」,例如顏色,圖像等。

如果您有大量字符串,我想我會將它們存儲在文本文件,XML文件或SQL服務器數據庫。

如果它是一個非常短的字符串列表......我想你可以將它作爲一個單獨的字符串存儲在my.settings中,並用一個獨特的字符分隔每個原始字符串。

當您使用Split()方法讀取它時,將其拆分回原始字符串列表。

如果你真的存儲在My.Settings字符串數組,該easist的方式很可能是用「StringCollection」的設置類型

+0

這不會是一個常規數組。爲什麼My.Settings不會採用常規數組,而是接受更復雜的StringCollection? – MAW74656 2011-03-15 21:18:50

+0

它只是,你不是第一個不喜歡它。不要吝嗇,但你應該去微軟論壇並在那裏抱怨。 – dbasnett 2011-03-15 21:46:52

+0

沒有試圖抱怨(與我原來的問題),只是試圖獲得功能的答案。我喜歡堆棧溢出方式比微軟論壇更好。在這裏我真正得到了明智的答案好的,答案是「不,你不能」。謝謝。 – MAW74656 2011-03-16 14:14:53

2

更新:看看在MSDN文章Using My.Settings in Visual Basic 2005中的高級設置部分。它看起來像該節中概述的方法(子類ApplicationSettingsBase並提供您自己的屬性)可能是您正在尋找的。


不能創建一個環境,它的類型是String(),大概是因爲再設置基礎設施將需要支持任何陣列T(),這不會對大多數類型的工作。

我個人認爲這將是有意義的只使用一個StringCollection,然後在代碼填充一個數組:

Module SettingsExtensions 

    Public Function GetMySettingArray() As String() 
     Dim mySetting As StringCollection = My.Settings.MySetting 

     ' If you're using .NET 3.5 or greater: 
     Return mySetting.Cast(Of String)().ToArray() 

     ' Otherwise: 
     Dim array(mySetting.Count - 1) As String 
     mySetting.CopyTo(array, 0) 

     Return array 
    End Function 

End Module 
1

不能在My.Settings直接使用數組。你可以用一個String類型的數組來定義一個類,但是爲什麼不使用StringCollection呢?無論您選擇做什麼,請記住,無論您在My.Settings中放置什麼,都必須使用XML可序列化,因爲這些設置以XML格式保存。