2017-03-03 7 views
-1

私はチャットアプリケーションプロジェクトに取り組んでいます。ユーザーは、TCP/IPソケット経由で通信しています。チャットルームにいる人は、ファイル、画像、そしてもちろんプレーンテキストを共有できます。 RichTextBoxを使ってメッセージと画像をクライアントに表示しています。下のリッチテキストボックスについてC#winformsでのチャットアプリケーションのリッチテキストボックス

観測が記載されています:リッチテキストボックスは、プレーンテキスト(非常に高速で、かつ堅牢な)と非常によく働いている

  • ユーザーはそれを取得以降で、画像の特定の数を貼り付ける
  • 非常に遅く、最終的にクラッシュするようになりました。

ここで目標を達成するにはどうすればよいですか?

  • リッチテキストボックスの代わりに、メッセージや画像を表示するコントロールはありますか? (メッセージを表示するだけで、編集する必要はありません)

  • 私は、WPFのリッチテキストボックスは古いWinFormsリッチテキストボックスより優れていると読んでいます。これはパフォーマンス面で正しいですか?

  • 私のケースではWPFに切り替えることはできません.WinformsがWPF要素をホストできることはわかっています。 WinformホストのWPF RichTextBoxエディタを使用することは可能ですか? (画像、段落の追加、FontColors、FontTypeなどの設定)

+0

DevexpressにはRichTextBoxコントロールがあります。ちょうど代替。試用版を使用して確認できます。 [link](https://www.devexpress.com/products/net/controls/winforms/rich_editor/) – Badiparmagi

+0

@Badiparmagiには無料の代替手段がありますか?ありがとう。 – Omer

答えて

0

チャットアプリケーションで完全にRichTextEditingが必要ですか?私の意見では、チャットは1つのフォントスタイルなどで構成されている必要があります。私は単純にコンテナ(UserControl、Panelなど)を作成し、テキスト/画像のラベルや画像編集を追加します。したがって、メッセージごとにラベルを追加し、各画像に画像編集を追加します。 WhatsAppやその他の一般的なメッセンジャーのように、上から下へのフローが得られます。

本当に完全なリッチテキストエディット機能が必要な場合は、テキスト部分からイメージを分離し、上記のようにビルドします。ラベルの代わりに多くの読み取り専用リッチテキストエディットを使用します。画像は画像編集でも表示されます。

あなたはイメージを分けているので、あなたは大きくておしゃれなリッチテキストエディタにならないという利点があります。さらに、上から下に並べられた異なるボックスにメッセージフローが表示され、下が最新です。これにより、たとえば最後の10個のメッセージを表示することができます。ユーザーがもっと見たい場合は、古い投稿をリロードする必要があります。だから、あなたはいつも10(またはあなたが望むもの)のメッセージを表示するだけで、メモリフットプリントを小さく保つことができます。

また、サイズが大きい場合や固定サイズを許可する場合は、画像を圧縮できます。だから誰もあなたのチャットを高解像度の画像で遅くしません。

第三者のコントロールなしこれまでのリッチテキストの代わりに、この編集機能がすべて必要とは思われません。フォーマットされたものを表示する必要がある場合は、WebBrowser-Controlを試してRTFをhtmlに変換することができます。しかし、私はこれがもっと体重であるかどうかはわかりません。

ヒント:不要になったリッチテキストエディットは必ず削除してください。

ここには、Winforms-ApplicationでWPF-Controlをホストする方法を説明するlinkがあります。これはあなたがそれを試してみたいと思っている場合、これはあなたに任意の利点を与えるとは思わない);)。

私はこれがあなたに役立つことを願っています。

+0

これはまさに私が聞くのが大好きです! あなたが言ったように、私はパネル、ラベル、ピクチャボックスに切り替えることを考えていましたが、それは正しいことではないと確信していました! 古い学校のリッチテキストボックスを使用するよりも、コンテナやパネルを使用してデータを操作する方がずっと簡単です。 コンテナを使用することを決めた場合のパフォーマンスはどうですか?たくさんのラベルや絵文字を追加した後には減速しますか? – Omer

+0

@Omerもしあなたのアプリケーションをたくさん追加するなら、あなたのアプリケーションは時間がたつにつれて遅くなります。たとえば、最後の10個のメッセージを読んでください。ユーザーが上にスクロールするか、「古いメッセージを読み込む」ボタンをクリックすると、この古いメッセージを読んだり表示することができます。したがって、アプリケーションは常に最小限の量のデータをロードします。 – Sebi

+0

申し訳ありませんが、英語は母国語ではありません。私が10〜15人働くトンの意味。私の悪い。現在のチャットアプリケーションでは既にこれが行われ、最後のチャット履歴のみが読み込まれます。 Btw、私はちょうどパネルに40ピクチャボックスを追加しようとし、魅力的なように働いた!ありがとうございました。 – Omer

関連する問題