如何将格式化文本重新加载到RTB?

时间:2013-08-24 08:59:41

标签: vb.net

我在VB.NET中有一个RTB,并在加密后将一个事件处理程序保存到文件中。但是,我无法弄清楚如何重新加载格式 - 当我打开它时,它会显示格式符号而不是格式化文本。这是我的代码:

Dim FileName As String = TextBox1.Text
File.Delete(FileName)
Dim EncryptElement As New TripleDESCryptoServiceProvider
            EncryptElement.Key = {AscW("B"c), AscW("A"c), AscW("1"c), AscW("R"c), AscW("3"c), AscW("9"c), AscW("G"c), AscW("V"c), AscW("5"c), AscW("S"c), AscW("P"c), AscW("0"c), AscW("L"c), AscW("Z"c), AscW("4"c), AscW("M"c)} '128 bit Key
            EncryptElement.IV = {AscW("N"c), AscW("B"c), AscW("5"c), AscW("3"c), AscW("G"c), AscW("L"c), AscW("2"c), AscW("Q"c)} ' 64 bit Initialization Vector

Dim fStream As FileStream = File.Open(FileName, FileMode.OpenOrCreate)
Dim cStream As New CryptoStream(fStream, New TripleDESCryptoServiceProvider().CreateEncryptor(EncryptElement.Key, EncryptElement.IV), CryptoStreamMode.Write)

Dim sWriter As New StreamWriter(cStream)

sWriter.WriteLine(RichTextBox1.Rtf)

sWriter.Close()
cStream.Close()
fStream.Close()

以上代码用于保存,以下代码用于打开。

Dim FileName As String = TextBox1.Text
Dim DecryptElement As New TripleDESCryptoServiceProvider
            DecryptElement.Key = {AscW("B"c), AscW("A"c), AscW("1"c), AscW("R"c), AscW("3"c), AscW("9"c), AscW("G"c), AscW("V"c), AscW("5"c), AscW("S"c), AscW("P"c), AscW("0"c), AscW("L"c), AscW("Z"c), AscW("4"c), AscW("M"c)}
            DecryptElement.IV = {AscW("N"c), AscW("B"c), AscW("5"c), AscW("3"c), AscW("G"c), AscW("L"c), AscW("2"c), AscW("Q"c)}

 Dim fStream As FileStream = File.Open(FileName, FileMode.OpenOrCreate)

 Dim cStream As New CryptoStream(fStream, New TripleDESCryptoServiceProvider().CreateDecryptor(DecryptElement.Key, DecryptElement.IV), CryptoStreamMode.Read)

 Dim sReader As New StreamReader(cStream)

 Dim DecryptedData As String = ""

 DecryptedData = sReader.ReadToEnd

 RichTextBox1.AppendText(DecryptedData)
 RichTextBox1.Enabled = True
 Button1.Text = "OK"

 sReader.Close()
 cStream.Close()
 fStream.Close()

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

你需要RichTextBox1.SaveFile(SomeStream,RichTextBoxStreamType)我认为StreamWriter正在填补它。

哦,看到你刚刚向全世界提供了加密密钥,你可能想要一个新的......

在评论未经证实后添加。

在保存例程中替换这两行

Dim sWriter As New StreamWriter(cStream)
sWriter.WriteLine(RichTextBox1.Rtf)

RichTextBox1.SaveFile(cStream,RichTextBoxStreamType.RichText);

并摆脱swriter.Close()

我想。