私の目的は、MS-Word.Wpfに似たエディタを作れるようにすることです。RichTextBoxは素晴らしいコントロールです。ScrollViewerの中に配置することで、 )しかし、私はページのようなMS-Wordが必要です.1つの効果的な方法はおそらく、richtextbox上の複数のページのルックアンドフィールを作成するようなscrollViewerにスタイルを適用することですが、それを行う方法はわかりません。 documentViewerを使用することです。固定ページ内で、ヘッダ(キャンバス)、ボディ(WpfRichTextBox)、フッター(キャンバス)を作成します。そして、複数のページを作成し、RichTextBoxのsizechangedイベントを購読することで、手動でページ付けを行っています。つまり、高さが変更されたときにページを別のページに移動します。あなたはこれを行う上でより良いアプローチを見ていますか?複数のリッチテキストボックスを使用するとパフォーマンスが低下しますか?複数のwpfリッチテキストボックスを使用したMS Wordのページ設定
答えて
@WpfProgrammerこれは私が言う良いアプローチです。 1000sのページがあるとすれば、間違いなくパフォーマンスの問題が発生します。この問題を回避するには、デマンドページングを行う必要があります。
仮想ページング:
1.あなたは意志がページを含むページ・テーブルを構築する必要があります。各ページには、ページのコントロール、イメージ、位置、ディメンション、およびスタイルに関する情報が含まれます。 [すべてのシリアライズ可能なデータ]
2. ページのすべてのデータをデシリアライズし、 RichTextBoxでページを作成する必要があります。仮想ページは ですが、 がレンダリングされる予定のプリキャッシュページはありません。 の例を挙げてください。もし私が第1ページにいたら。次に、 次の3つの連続したページを に順次デシリアライズし、 コレクションに追加します。次に、連続したページ の移動に対してこの プロシージャを繰り返します。 最も頻繁に使用されるコレクションを使用してロジックを追加しています。それは は十分に速くなります。 1000ページです。 汚れていない、または訪問していないものを倒すことができます ページ。これにより、パフォーマンスはわずかに低下する可能性があります。 パフォーマンスがそれほど遠い場合は、低いハードウェアにもっと気をつけてください。 次に、 クリーニングを検討する必要があります。
3.クリーニング - クリーニングは、 のLFUページを識別し、 を削除するプロセスです。これは、 のパフォーマンスがより顕著である場合に非常に役立ちます。
こんにちは。 richTextBoxの最小の高さ、幅をA4サイズに設定します(言います)。 RichTextBox Size Changedイベントを購読します。コンテンツが超過するとすぐにこのイベントが発生します。次に、前のページの最後のブロックを取り出し、次のページの最初のブロックにプッシュします(ページが存在しない場合は、新しいページを最初のブロックとして追加します)また、フォーカスを新しいページに変更する必要があります(最後のRTBでEnterキーを押すと、新しいページにフォーカスがあることが予想されるため)。いくつかのページ(たとえば2番目)のブロックを削除すると、ページ下部のブロックをすべてこのページに追加する必要があります。これにより、ページングロジックがブロックを再度押し下げて調整します。さらなる助けが必要な場合は、コードの一部を共有することができます。
- 1. MS Word用にC#でデフォルトフォントを設定
- 2. MongoDB(c#)を使用したWPF DataGridのページ設定
- 3. C#を使用してMS-Wordのセキュリティセンター設定をプログラムで構成する
- 4. 複数ページのiReportを使用したJRXMLの複数ページ
- 5. SQLiteデータベースを使用したMS Wordの差し込み印刷
- 6. 弾性検索を使用した単一リクエストでの複数ページ設定
- 7. Java:POI/HWPFを使用したms-wordドキュメントの解析
- 8. 複数のキーを使用したCouchDBのクエリビュー書式設定
- 9. Flexを使用した複数の解像度のターゲット設定
- 10. 特定のタブのリッチテキストボックスを複数のページに印刷するC#
- 11. WPF。リッチテキストボックス
- 12. WPFのページ設定ダイアログ
- 13. 同じページの複数のMSチャートは同じイメージマップを使用します
- 14. ルックアップタイプのMetaPropertyを設定するとMS Wordがクラッシュする
- 15. winformsのリッチテキストボックスに複数のページを作成する[c#]
- 16. WPFリッチテキストボックスの下線
- 17. MS Wordの* * VBA
- 18. Powershellを使用してMS Wordのテキストフォームフィールドを編集する
- 19. PythonのMS Wordの
- 20. MS WordのiOSの
- 21. MS WordのMS Word文書をC#Windowsフォームから開く
- 22. ウェブサイトを使用 - 複数のページまたは単一のページ
- 23. phpを使用して複数のテキストファイルにメニューリストを設定
- 24. スケーラビリティオプションを使用して複数のMySQLデータベースを設定する
- 25. 複数の受信者を使用してPayPalを設定
- 26. オートコンプリートを使用して複数のテキストボックスを設定する
- 27. SiteMapPathコントロールを使用したサイトナビゲーションでのページ設定の保存
- 28. リッチテキストボックス内のテキストの書式設定
- 29. Windowsのリッチテキストボックスのスタイル設定コード
- 30. 複数のリッチテキストボックス間のフロードキュメントの共有
仮想化アプローチのページに感謝します。私にとって、エディタあたりの最大ページ数は50を超えません。また、2〜3人のエディタが立ち上げられるかもしれませんが、仮想化は実際に全体のパフォーマンスを向上させると思います。私が見ている課題は、基本的なアルゴリズムがありますが、ページネーションです。あるリッチテキストボックスから別のリッチテキストボックスにブロックを移動し、削除操作中にコンテンツを流すことも難題です。また、このシナリオで仮想化を行うこともやりにくいです。MS WordのようなrichTextBoxページを簡単に表示する方法はありますか? – WpfProgrammer
richTextBoxのサイズ変更イベントを聞いて、ブロックを1つのrtbから別のrtbにプッシュします。このプロセスはすべてのrtbで繰り返されます。削除中に、削除が発生したページでは、以降のrtbのブロックをすべてこのページを再調整します。 – WpfProgrammer
1)「ブロックを1つのリッチテキストボックスから別のリッチテキストボックスに移動し、削除操作中にコンテンツを流すことも課題です」 - これはレイアウトです。そのようにする必要があります。 2)「MS WordのようなrichTextBoxのページを表示する方法はありませんか?」 - 私の考える限り、特別な方法はありません。 –