2

複数のテキスト ボックスを含むフォームがあり、それぞれの内容を .txt ファイルの新しい行に書き込みたいと考えています。同様に、ユーザーがフォームに入力すると、情報がファイルに保存されます。次に、ファイルから同じテキスト ボックスに情報を取得できるようにしたいと考えています。これまでのところ、これを行うことはできますが、テキスト ボックスの 1 つが複数行の場合に問題が発生します。

Printline(1, txtBox1.text)

Printline(1, txtBox2.text)´which is the multiline one

Printline(1, txtBox3.text)

これをファイルから読み返すと、txtBox3 からのテキストが必要な複数行テキスト ボックスの 2 行目が表示されます。

LineInput(1, txtBox1.text)

LineInput(1, txtBox2.text)

LineInput(1, txtBox3.text)

複数行のテキスト ボックスからすべての行を取得してファイルの 1 行に書き込み、それを複数行のテキスト ボックスの個別の行として読み取るにはどうすればよいですか?

私は理にかなっていると思いますか?「1つのtxtBox - ファイル内の1行」のロジックを維持したいと思います

書き方と読み方にはさまざまな方法が必要だと思いますが、これにはあまり詳しくないので、どんな助けでも大歓迎です。

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数に関係なく、指定されたすべてのテキストを 1 行に入れます。複数の行がある場合は、個々の行を区切るための空白スペースが含まれます (いずれにせよ、それらはすべてファイルの 1 行に収まります)。別の区切り文字を追加して、この最後の機能を変更したい& " " &場合があります (必要なものに置き換えてください)。

于 2013-08-24T19:12:11.173 に答える
0

1 つのオプションは、出力に含まれないように改行をエスケープし、再度読み取るときにエスケープを解除することです。

これを行うコードの例を次に示します (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

もう 1 つのオプションは、データをXMLJSON、またはYAMLに保存することです。これらはいずれも、解析するライブラリが必要なテキストベースの形式ですが、将来の柔軟性を高めるとともに、複数行のテキストをきれいに処理する必要があります。

于 2013-08-24T19:22:17.453 に答える