我有一个带有多个文本框的表单,我想将每个文本框的内容写入.txt文件中的新行。在用户中,用户填写表格,信息存储在文件中。然后我希望能够将文件中的信息检索到相同的文本框中。到目前为止,我能够做到这一点,但是当其中一个文本框是多行时我遇到了问题。
Printline(1, txtBox1.text)
Printline(1, txtBox2.text)´which is the multiline one
Printline(1, txtBox3.text)
当我从文件中读回来时,我得到了多行文本框的第二行,我想要txtBox3中的文本。
LineInput(1, txtBox1.text)
LineInput(1, txtBox2.text)
LineInput(1, txtBox3.text)
如何从多行文本框中获取所有行以写入文件中的一行,然后在多行文本框中将其作为单独的行读回?
我希望我有意义吗?我真的想保持“一个txtBox - 文件中的一行”的逻辑
我想我需要使用不同的写作和阅读方法,但我对此并不熟悉,所以非常感谢任何帮助。
答案 0 :(得分:1)
如果有多行,您可以依赖Lines
属性。示例代码(curTextBox
是给定的TextBox Control
):
Using writer As System.IO.StreamWriter = New System.IO.StreamWriter("path", True)
Dim curLine As String = curTextBox.Text
If (curTextBox.Lines.Count > 1) Then
curLine = ""
For Each line As String In curTextBox.Lines
curLine = curLine & " " & line
Next
curLine = curLine.Trim()
End If
writer.WriteLine(curLine)
End Using
注意:此代码将给定TextBox
中所有文本的行数分别放在一行中。如果它有多行,则它包含一个空格,用于分隔各行(无论如何它们都适合文件的一行)。您可能希望通过添加不同的分隔字符来更改此最后一项功能(将& " " &
替换为您想要的那个)。
答案 1 :(得分:0)
一个选项是escape换行符,以便它们不在输出中,然后在读回时取消它们。
这里有一些示例代码可以执行此操作(之前我从未编写过VB,所以这可能不是惯用的):
' To output to a file:
Dim output As String = TextBox2.Text
' Escape all the backslashes and then the vbCrLfs
output = output.Replace("\", "\bk").Replace(vbCrLf, "\crlf")
' Write the data from output to the file
' To read data from the file:
Dim input As String = ' Put the data from the file in input
' Put vbCrLfs back for \crlf, then put \ for \bk
input = input.Replace("\crlf", vbCrLf).Replace("\bk", "\")
' Put the text back in its box
TextBox2.Text = input
另一种选择是将您的数据存储在XML,JSON或YAML中。其中任何一种都是基于文本的格式,需要一个库来解析,但应该干净地处理你所拥有的多行文本,同时提供更大的未来灵活性。