我正在尝试在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")
这是我现在的代码;但是,当我运行它时,它会生成一个空白表单而不是列表框的内容。
答案 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")
代码为我生成以下输出:
答案 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")