2016-08-07 13 views
1

私はWPFにはかなり新しく、問題を見つけました。WPFの読み込みと書き込みRichTextBoxのテキスト

リッチテキストボックスがあり、テキストを設定しました。その後、豊富なtexboxテキストが変更されるたびに(イベントハンドラを使用して)、元のテキストと等しいかどうかを確認する必要があります。

しかし、テキストが変更されていない場合でも、コードは、テキストを読むときに新しい行が表示されていることを示しています。

この

は私がやっているものを基本的には次のとおりです。私は、コンソールに「Hello Worldの」を参照してくださいことを期待する

//Create a new text box 
RichTextBox r = new RichTextBox(); 

//Write Text "Hello World" to the rich text box 
r.Document.Blocks.Clear(); 
r.Document.Blocks.Add(new Paragraph(new Run("Hello World"))); 

//Read Text "Hello World" from rich text box 
string textBoxText = new TextRange(r.Document.ContentStart, r.Document.ContentEnd).Text; 
Console.WriteLine("\"" + textBoxText + "\""); 

(問題を示すsimiplifiedバージョン)が、代わりにそれは与える:

"Hello World 
" 

この後に新しい行があるため、私のコードに問題があります。 これを避けるためにRichTextBoxを読み書きするより良い方法はありますか?

+0

なぜ私はRichTextBoxを使用するのだろうか?私はいつもtextwrappingでTextBoxを使用します。 – Snovva1

+0

私はまたそれに含まれるテキストの異なる部分を色付けする必要があります – WPFHelp

答えて

0

標準のWPF RichTextBoxではなく、WPFウィンドウ内でWindows Forms RichTextBoxを使用することに決めました。

xamlで使用するのはやや難解なので、主にコードビハインドでウィンドウを開いたときにそのプロパティを設定しています。

これまでのすべての問題を解決しました。

詳細情報:

https://msdn.microsoft.com/en-us/library/ms751761(v=vs.110).aspx

https://www.simple-talk.com/dotnet/.net-framework/mixing-wpf-and-winforms/

それはあなたがWPFのRichTextBoxを使用したい場合は、問題を解決しないしないよう(私は、答えとしてこれをマークしません。 WinForms)

編集:実際には、この方法は、WinFormsコントロールがすべてのWPFコントロールの上に描画されるため、この方法を避けることをお勧めします。これにより、wpfのドロップダウンメニューを使用できなくなります。 ...まだ答えを探しています!

編集:

私はリサイズのリッチテキストボックス上記ダウンメニュー私のWPFの低下を描画するthis answerを使用しようとしました。それはうまくいったけど、アラインメントは間違っていた

今、私はWPFとWinForms RichTextBoxの両方を放棄して、AvalonEdit(これは素晴らしい)となっています。これは、コードエディタ用に開発されたものですが、リッチテキストボックスの置換には適しています。

テキストの部分の色を変更するために、とthisの混合物を使用しました。

関連する問題