3

XML ファイルから取得した HTML 文字列を扱ってきました。これらの文字列をフォーマット付きのリッチテキストボックスに表示する方法を見つけようとしています。だから例えば

 <p>This is a <strong>HTML</strong> string from the <em>XML</em> file</p>

また

 <p>This is our <span style="text-decoration: underline;">response</span></p>

次のようにリッチテキストボックスに表示する必要があります。

これは、 XMLファイルからのHTML文字列です。

これが私たちの回答です <<-- これは下線を引く必要があります

どうすればいいのかよくわかりません。また、HTML 文字列は個別であり、完全な HTML ファイルを形成しないため、ここで WebBrowser クラスがどのように機能するかについてはよくわかりません。

さらに、リッチテキストボックスに変更が加えられると、XML ファイルに書き戻されるので、フォーマットを元に戻す方法 (HTML エンコード) が必要です。

これを達成する方法はありますか?私は本当に助けを使うことができました。私は困惑しています。

編集:

それが役立つ場合は、これが私が文字列を取得する XML の一部です (これに似たもの)。

<Field id="13598" type="1">&lt;p&gt;&lt;strong&gt;This &lt;/strong&gt;is our &lt;em&gt;response&lt;/em&gt;&lt;/p&gt;</Field>

私は基本的に、ユーザーがフィールドで文字列を編集して保存できるようにしようとしています。

編集2:

WebBrowser コントロールを使用して要件を満たすことができましたが、新しい問題に直面しています。こちらをご覧ください: WYSIWYG エディタで HTML を編集 する

4

3 に答える 3

3

WYSIWYGHTMLエディターを使用して解決しました。しかし、私は新しい問題に直面しています。誰かが助けてくれるなら、それは素晴らしいことです!

これが私の新しい質問です: WYSIWYGエディターでHTMLを編集する

于 2012-11-16T04:00:19.887 に答える
1

CodeProject サイトから知る限り、.NET RichTextBox コントロールでは、RTF コードまたはプレーン テキスト ファイルを使用してファイルを保存およびロードすることしかできないため、HTML を表示するために拡張 RTB を使用していますか。したがって、その機能を得るには RTB を拡張する必要があります。

これがリンクです - RTB to save Html

しかし、それを避けて xml を直接 RTB に読み込むことができれば、動作するコードがここにあるので、はるかに優れています。

RTB への HTML フォーマット コードの詳細については、こちらをご覧ください。

于 2012-11-09T10:00:25.327 に答える
1

ウィンズ、あなたの要求が何かわからなくて困っています。

あなたのコメントに基づいて...

"I'm trying to display them in a RTB as how they'd appear in on a Web Page"

  1. <img />タグが実際の画像としてレンダリングされるなど、HTML マークアップを実際のページとしてレンダリングする場合 。

  2. さまざまな構文色を使用して「ページのソースを表示」した場合に表示されるように、HTML マークアップをテキストとしてレンダリングしたい

問題...

HTML マークアップとRTF 仕様は大きく異なるため、マークアップを RTF に変換して、RichTextBox に HTML をページとして表示させる必要があります。

あなたのお悩みを解決するために...

  1. .NET で HTML マークアップを Web ページとしてレンダリングするには、組み込みの WebBrowser コントロールを使用できます。このコントロールはバックグラウンドで Microsoft の IE エンジンを使用しますが、HTML5 や CSS3 などの特定の標準にはあまり適していないことに注意してください。( IIRC )ブラウザー機能コントロールを使用して、ページのレンダリング方法を改善できます。

  2. HTML マークアップをテキストとしてレンダリングするには、構文の色分けを使用して、"ページのソースを表示" した場合に表示されるように、RichTextBoxをある程度使用できます。ここでは XML を使用した例を示しますが、XML と HTML は非常に似ているため、おそらく HTML 構文のレンダリング用にソリューションを変更できます。

注: シンタックス ハイライトは基本的に、特定のものに特定の色を使用するようにテキストをレンダリングするだけです。たとえば、タグは赤、属性は青、コメントは緑などです。

別のシンタックス ハイライターの例を次に示します。

http://dotnet-csharp-programming.blogspot.co.uk/2010/04/xml-highlighting-in-rich-textbox.html

他の解決策...

HTML コンテンツをページとしてレンダリングするには、.NET 用のサード パーティ製ブラウザー コントロールを探すことを検討してください。FireFox レンダリング エンジン用のものがあることは知っていますが、Chrome 用のものもあるかもしれません。これは、組み込みの WebBrowser コントロールの置き換えに関するスタックオーバーフローの記事です

HTML 構文をレンダリングするには、Scintilla.NETの使用を検討するか、 ActiPro の Syntax Editorなどの商用製品を購入することもできます。

于 2012-11-12T09:28:33.717 に答える