RichTextBox从电子邮件标题中删除换行符

时间:2017-07-19 13:25:41

标签: vb.net visual-studio richtextbox email-headers

因此,我正在尝试将一个简单的添加内容放在一起,用于阅读电子邮件标题。获取电子邮件的标题非常简单,我已经创建了一个带有RichTextBox的窗体,以显示标题(目前我只是推送完整的原始标题,将来我想要格式化它们和使它们更容易阅读,突出显示更重要的部分等,因此RichTextBox)。

我遇到的问题是,一旦我设置了textbox.Rtf,它就会丢失标题中的自然新行,这会使它们变得混乱。如果我使用textbox.Text,它们会有换行符,因此它们可以更好地阅读。

我尝试了一些不同的东西,试图强制显示新的行(例如使用\ line和\ par),但是一旦我使用.Rtf,它似乎永远不会出现。

   Public Class showHeaders

        Public Shared Sub MyMsg(msg As String)
            Dim MsgUserForm1 As New MsgUserForm
            With MsgUserForm1
                MsgUserForm1.Text = "Email headers:"
                .RichTextBox1.Text = msg
                .RichTextBox1.Rtf = .RichTextBox1.Text
                .Show()
                Dim sSaveFolder As String = "C:\headers\"
                .RichTextBox1.SaveFile(sSaveFolder & "Headers.txt")
            End With
        End Sub

        Private Shared Function parseHeaders(inputHeader As String) As String
            inputHeader = inputHeader.Replace("\r\n", "\line")
            inputHeader = inputHeader.Replace("\n", "\line")
            inputHeader = inputHeader.Replace("Received:", "\b Received:\b0")
            inputHeader = "{\rtf1\ansi " + inputHeader + "}"
            Return inputHeader
        End Function

    End Class

任何帮助都会受到欢迎,因为我不明白为什么RichTextBox的行为方式如此。

1 个答案:

答案 0 :(得分:0)

Vb.net不允许您使用\转义\r\n\n个字符来表示相应的Chr(13)和Char(10)字符

相反,你需要这样做。

 inputHeader = inputHeader.Replace(VbNewLine, "\line")
 inputHeader = inputHeader.Replace(VbLF, "\line")

或者,您可以使用Control.Chars.CrLfControl.Chars.Lf