2010-12-07 12 views
0

私は自分のインスタントメッセンジャー(チャット)が欲しいです。また、通常のテキストボックスは、書式付き/色付きテキストをサポートしていません。 WPFのリッチテキストボックスに関する記事を読んで、ブロック、段落、およびランの新しい概念をかなり興味深いものにしました。 これらのオブジェクトをシリアル化して他のチャットクライアントに送信することをお勧めしますか? (テキストは、著者の元のテキストのように書式設定する必要があります) input-textboxからoutput-textboxにブロックを追加する場合(テスト用のみ)、ブロック/段落が他のリッチテキストボックス。 次に、これらのオブジェクトから参照を保存し、最初のテキストボックスから参照を削除し、2番目のテキストボックスに追加しました。C#:インスタントメッセンジャーのリッチテキストボックス(チャット)

For example: 


    FlowDocument oldTextDocument = richTextBoxMessageBox.Document; 

      richTextBoxMessageBox.Document = new FlowDocument(); 

      while(oldTextDocument.Blocks.Count > 0) 
      { 
       richTextBoxChatHistory.Document.Blocks.Add(oldTextDocument.Blocks.FirstBlock); 
      } 

(これは例外が発生しますので、私はのために、それぞれでそれを行う傾ける。)

答えて

1

、彼らが持つことになりますので、私は、それが他のクライアントにシリアライズされたオブジェクトを送信するために良いアイデアだとは思いませんいくつか(かなりの)オーバーヘッド。

私はチャットアプリケーションを使用していましたが、チャットウィンドウの主なコントロールとしてWebブラウザを使用しました(これは、多くのフォーマットやリッチメディアなどをサポートしています)。テキスト(暗号化)。

2つの異なるコントロールに同じ段落のインスタンスを持つことはできません.2つの異なるパネルで同じラベルを持つことができないように、ContentElementであるためです。

+0

こんにちはアンドレイ、richtextboxからhtmlテキストを入手できますか? (私も画像を表示したい、これは可能ですか?) – user437899

+0

richtextboxから.Netが提供するhtmlを得ることはできません。あなたはrichtextboxからhtmlを得ることができます。しかし、上で示唆したように、RichTextBoxの代わりにWebBrowserコントロールを使用すると、簡単にhtmlを取得できます。画像(アニメーションGIFを含む)をWebブラウザーに置くことができます。 –

+0

WebBrowserコントロールではテキストのみを表示できますが、WebBrowserはテキストボックスとしても機能しますか? – user437899

1

Richtextboxは、私が作ったインスタントチャットアプリの魅力のように機能します。Flowdocumentの動作を勉強し、基本クラスを拡張してください。だから、プロパティを変更したようなものを使用することができますc.q.クリーンなコードを書くための依存関係プロパティ実際には、段落を埋めることに注意する必要があります。フォームのコードの背後にないコントローラ内のプロパティで行う必要があります。あなたのコードをきれいに保つ必要がある場合。次をご覧ください:http://www.lebroitsolutions.nl/en/projects-chat.aspxあなたがコードをダウンロードできる場所と私は詳細を提供しました。 flowdocument(リッチテキストボックス全体ではなく)をストリーミングするためのオーバーヘッドは最小限です。

関連する問題