読み込み専用モードで大量のテキスト(数百MB)を表示できるTextBox風のWinFormsコントロールはありますか?もちろん、ファイル全体を一度にメモリにロードする必要はありません。大量のテキストを表示するコントロール
標準のTextBoxを使用して、スクロールとキーボードのイベントを処理し、可視の「ウィンドウ」を埋めるために必要なテキストの量を読み込み、これを実装しようとしています。しかしそれはまだかなりバギーであり、私は車輪を再発明していると感じています。
読み込み専用モードで大量のテキスト(数百MB)を表示できるTextBox風のWinFormsコントロールはありますか?もちろん、ファイル全体を一度にメモリにロードする必要はありません。大量のテキストを表示するコントロール
標準のTextBoxを使用して、スクロールとキーボードのイベントを処理し、可視の「ウィンドウ」を埋めるために必要なテキストの量を読み込み、これを実装しようとしています。しかしそれはまだかなりバギーであり、私は車輪を再発明していると感じています。
私はそのようなコントロールについて知りませんでした(リッチテキストボックスは、単一のウィキペディアページを置くと遅くなるので、すべてをメモリにロードしていると確信しています)。
winformsでの私の経験は、あなたが必要とする動作を得るために、デフォルトのコントロールをカスタマイズする必要があるということです。一方、彼らはあなた自身ですべてを行うことなく、1つまたは2つの簡単な行動をすばやく追加する良い基盤を提供します。
私は数ヶ月間winformsコントロールを使用してきましたが、多くの場合、自分のコントロールで特定の(いくつかの、他の複雑な)ビヘイビアを実装しました。
私が知っているようなコントロールはありません。昔、私は同様のコントロールを書いてきましたが、それはDelphi用ですが、原則は同じです(限られたデータブロックを読み込んでレンダリングします)。だからあなたがそれを自分で実装することを決めた後、TextBoxコントロールから離れると、そのようなニーズにはあまり適していません。すべてのカスタムペイントで新しいコントロール子孫を作成する必要があると思います。それはあまり簡単ではありませんが、唯一正しい方法です。
コントロールにテキストの「数百MB」をロードすると、メモリ/パフォーマンスが非常に悪い考えのように聞こえます。プログラムがクラッシュする可能性があります。とにかく、何百万行もの行をどうやって読むのですか?あなたは本当にそこにテキスト全体が本当に必要ですか?あなたがバッファを持っていてRichTextBox
に少量のテキストをロードし、最後に到達したら(または終わり近く)、次の100(または他の任意の量)の行をロードする方が良いでしょう。または、何かを探している場合は、キーワードを検索してRichTextBox
に関連するテキストを入力します。それは本当にあなたがやろうとしていることにかかっています。
ScintillaまたはそのラッパーScintilla.Netを使用してチャンスがあると思います。私はそれが完璧な仕事ではないと思うが、それはTextBox
またはRichtTextBox
よりもずっと良い。
各テキストボックス内の文字10.000あなたはテキストボックスを大きくする場合は、テキストを編集するか、スクロール時にプログラムを高速に実行されます私、最近発見thet .... .....の部分にテキストを表示...
これはまさに私が必要とするものです。あなたが今説明した方法でテキストファイルを処理し、現在表示されているテキストの量だけメモリにロードするコントロールです。 –