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)

次に、アプリのシャットダウンに保存します。

' 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 に答える