我正在尝试将组合框中的信息修改为文本文件,以便保存。如果组合框中的信息是John,Marry,Jack我希望它出现在文本文件中,如下所示:
John
Mary
Jack
我目前使用的代码在文本文件
中给出了JohnMaryJack的结果For Each item As Object In cmbworld.Items
Dim test As String
test = item
sb.AppendFormat("{0}", item)
Dim FILE_NAME As String = "D:\Documents\test.txt"
If System.IO.File.Exists(FILE_NAME) = True Then
Dim objWriter As New System.IO.StreamWriter(FILE_NAME)
objWriter.Write(test)
objWriter.WriteLine()
objWriter.Close()
MsgBox("Text written to file")
Else
MsgBox("File Does Not Exist")
End If
Next
我该如何解决这个问题?
答案 0 :(得分:1)
首先,我会将文件写入For Each-loop。这样你只需要写一次文件。 其次,您可以稍微调整@BiggsTRC的答案
sb.AppendFormat("{0} {1}", item, Environment.NewLine)
此外,您使用变量test
来写入文本文件,而不是您使用的stringbuilder。这样,格式化永远不会进入文件。
所以你的代码看起来像这样:
Dim sb as new StringBuilder()
For Each item As Object In cmbworld.Items
'Dim test As String
'test = item
sb.AppendFormat("{0} {1}", item, Environment.NewLine)
Next
Dim FILE_NAME As String = "D:\Documents\test.txt"
If System.IO.File.Exists(FILE_NAME) = True Then
Dim objWriter As New System.IO.StreamWriter(FILE_NAME)
objWriter.Write(sb.ToString()) 'Use the stringbuilder here
objWriter.WriteLine()
objWriter.Close()
MsgBox("Text written to file")
Else
MsgBox("File Does Not Exist")
End If
可能会有一些语法错误,因为我很长一段时间都在编写VB而且目前还没有VS出现,但我认为你得到了图片; - )
答案 1 :(得分:0)
我认为你只需改变这一行:
sb.AppendFormat("{0}", item)
是这样的:
sb.AppendFormat("{0}\r\n", item)
(注意{0}之后的空格)
这会在每个人的姓名之后给你一个空格,这样你最终会在每一行中找到一个名字,并在最后一行之后返回。
答案 2 :(得分:0)
IO.File.WriteAllLines(filename, (From p As String In cmbworld.Items).ToArray)