2

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

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

4

2 回答 2

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根据行数将给定的所有文本放在一行中。如果它有多于一行,它会包含一个空格来分隔各个行(无论如何,它们都适合文件的一行)。& " " &您可能希望通过添加不同的分隔字符(替换为您想要的字符)来更改最后一个功能。

于 2013-08-24T19:12:11.173 回答
0

一种选择是转义换行符,使它们不在输出中,然后在读回时将它们转义。

下面是一些可以做到这一点的示例代码(我以前从未编写过 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中。其中任何一种都是基于文本的格式,需要一个库来解析,但应该干净地处理你拥有的多行文本,同时提供更大的未来灵活性。

于 2013-08-24T19:22:17.453 回答