使用StringBuilder将列表框的内容追加到文本文件中

时间:2017-01-18 09:43:19

标签: vb.net

我正在尝试在visual studio中创建一个程序,一旦按下按钮,ListBox的内容就会被添加到文本文件中。

我目前正在使用StringBuilder这样做,因为我的教授告诉我这是最简单快捷的方式 - 我知道我也可以使用StreamWriter

Dim CreateReciept As New System.Text.StringBuilder

CreateReciet.Append(lstOrderForm.Text & vbCrLf)

System.IO.File.WriteAllText("order_receipt.txt", Text.ToString())

Process.Start("order_receipt.txt")

这是我现在的代码;但是,当我运行它时,它会生成一个空白表单而不是列表框的内容。

2 个答案:

答案 0 :(得分:1)

你看错了。 ListBox.Text只会提供当前所选项目的文字:

  

当此属性的值设置为字符串值时,ListBox将在ListBox中搜索与指定文本匹配的项目并选择该项目。您还可以使用此属性来确定ListBox中当前选择的项目。如果ListBox的SelectionMode属性设置为 SelectionMode.MultiExtended ,则此属性返回第一个选定项的文本。如果ListBox的SelectionMode属性未设置为 SelectionMode.None ,则此属性将返回第一个选定项的文本。

而是遍历ListBox.Items集合:

  

此属性使您可以获取对当前存储在ListBox中的项列表的引用。使用此引用,您可以添加项目,删除项目以及获取集合中项目的计数。有关可以使用项集合执行的任务的更多信息,请参阅ListBox.ObjectCollection类参考主题。

最后不要使用Text.ToString,这是行不通的。而是使用您的StringBuilder

Dim sb As New StringBuilder

For Each item In lstOrderForm.Items
    sb.Append(item.ToString() & vbCrLf)
Next

System.IO.File.WriteAllText("order_receipt.txt", sb.ToString())

Process.Start("order_receipt.txt")

代码为我生成以下输出:

enter image description here

答案 1 :(得分:0)

请尝试以下方法:

Dim CreateReciet As New System.Text.StringBuilder

CreateReciet.Append(lstOrderForm.Text & vbCrLf)

System.IO.File.WriteAllText("order_receipt.txt", CreateReciet.ToString())

Process.Start("order_receipt.txt")

正如我上面所说,你的stringbuilder没有做任何有用的事情,所以你可以写:

System.IO.File.WriteAllText("order_receipt.txt", lstOrderForm.Text & vbCrLf)
Process.Start("order_receipt.txt")