0

好的,所以我在写入文本文件、从 My.Settings 检索值时遇到了一些麻烦。代码如下。问题是当我检查文本文件时,它只有第一行(这只是代码中的一个简单字符串)。

Dim settingsfile As String = Directory.GetCurrentDirectory & "\RapidSend_Settings.txt"
Dim objWriter As New System.IO.StreamWriter(settingsfile, False)
objWriter.WriteLine("This is the introductory line")
For Each strEmail As String In My.Settings.User_Emails 'Specialized.StringCollection
    objWriter.WriteLine("Email " & strEmail)
Next
For Each strHostName As String In My.Settings.User_HostName ' Specialized.StringCollection
    objWriter.WriteLine("Host " & strHostName)
Next
objWriter.WriteLine("End Of File")
objWriter.Close()

这是代码后文本文件的样子:

 This is the introductory line
 End Of File

我的问题是有没有人知道问题是什么,或者有其他方法可以做到这一点。顺便说一句,所有 My.Settings 都是 Specialized.StringCollection,因此它们包含很多字符串。

4

1 回答 1

1

由于您不再按预期方式使用设置,因此最好创建自己的容器并自己管理它:

  • 如果没有模块,则将模块添加到您的应用程序
  • 添加Friend settingsList As New List(Of String)到它

这将创建一个全局字符串集合,您可以将数据添加到其中。它可以是公开的或朋友的。还有其他方法可以做到这一点,但这是最简单的。也为主机创建一个。

添加到它们很简单:

settingsList.Add(some_STRING_variable)

然后保存在App关机:

' get file name to hold the data
Dim file As String
file = System.IO.Path.Combine(Environment.GetFolderPath( _
       Environment.SpecialFolder.ApplicationData),  "myproduct", "settings.txt")
' result will be Users\Appdata.... where data is supposed to go

' open a stream
Using fs As New IO.StreamWriter(file, IO.FileMode.CreateNew)
    Dim n As Integer = 1
    ' loop thru List contents
    For Each s As String In settingsList
        ' ToDo: edit format to fit your needs
        fs.WriteLine(String.Format("{0} = {1}", n.ToString, s))
        n += 1
    Next

End Using         ' close and properly dispose of stream
于 2014-07-03T16:30:36.710 回答