从多行文本框写入.txt文件,然后将其读回

时间:2013-08-24 18:46:41

标签: vb.net textbox multiline

我有一个带有多个文本框的表单,我想将每个文本框的内容写入.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 - 文件中的一行”的逻辑

我想我需要使用不同的写作和阅读方法,但我对此并不熟悉,所以非常感谢任何帮助。

2 个答案:

答案 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

另一种选择是将您的数据存储在XMLJSONYAML中。其中任何一种都是基于文本的格式,需要一个库来解析,但应该干净地处理你所拥有的多行文本,同时提供更大的未来灵活性。