2016-11-18 7 views
-2

a4にリッチテキストボックスで置き換えようとしています。それは 数字と特殊文字が置換えで機能しない

この

は、私が使用しているコードです..「」ない「4」でなく、「4nsi4nsicpg1252ng16393rd4r」でテキストを置き換えます。 RichTextBox1.Rtf = RichTextBox1.Rtf.Replace("a", "4")

私は「」と置き換えることができる方法上の任意のヘルプ"4"?私は "a"を "test"で置き換えることができますが、 "4"ではありません。

答えて

5

RTF(リッチテキスト形式)は、テキストの書式設定方法を説明するドキュメントとコントロールワードの組み合わせです。 RichTextBox1.RtfプロパティはプレーンテキストではなくRTFを返します。そのため、ReplaceステートメントはRTFコントロールワードの一部を破損しています。たとえば、あなたのRTFはおそらく開始します

\rtf1\ansi\ansicpg1252がRTF制御ワードです
{\rtf1\ansi\ansicpg1252 ... 

。あなたのReplaceがすることに変更されていない: - マイナス制御ワードの開始を示すために使用され\文字

{\rtf1\4nsi\4nsicpg1252 ... 

\4nsi\4nsicpg1252は、もはや有効なRTF制御ワードであるので、それらはテキストとして表示されてしまいます。

あなたが代わりにすることをを使用して試みることができるようRichTextBox.Textプロパティは、プレーンテキストを返しますが、私は、これは、文書に適用されていた任意のフォーマット取り除くだろうと疑っ:

RichTextBox1.Text = RichTextBox1.Text.Replace("a", "4") 
0

は、検索/置換をリッチテキストボックスコントロールでフォーマットを保存するために実行することができます。

Private Sub Replace(ByVal findText As String, ByVal replacement As String) 
    Dim startIndex = 0 
    Dim foundIndex = RichTextBox1.Find(findText, startIndex, RichTextBoxFinds.None) 

    While foundIndex >= 0 
     RichTextBox1.SelectedText = replacement 
     startIndex = foundIndex + replacement.Length 
     foundIndex = RichTextBox1.Find(findText, startIndex, RichTextBoxFinds.None) 
    End While 
End Sub 

複数の変更は、ここで説明するように、第2リッチテキストボックスを使用して、単一のアンドゥブロックに組み合わせることができる。

https://stackoverflow.com/a/5097179
関連する問題