2009-07-21 20 views
1

読み込み専用モードで大量のテキスト(数百MB)を表示できるTextBox風のWinFormsコントロールはありますか?もちろん、ファイル全体を一度にメモリにロードする必要はありません。大量のテキストを表示するコントロール

標準のTextBoxを使用して、スクロールとキーボードのイベントを処理し、可視の「ウィンドウ」を埋めるために必要なテキストの量を読み込み、これを実装しようとしています。しかしそれはまだかなりバギーであり、私は車輪を再発明していると感じています。

答えて

0

私はそのようなコントロールについて知りませんでした(リッチテキストボックスは、単一のウィキペディアページを置くと遅くなるので、すべてをメモリにロードしていると確信しています)。

winformsでの私の経験は、あなたが必要とする動作を得るために、デフォルトのコントロールをカスタマイズする必要があるということです。一方、彼らはあなた自身ですべてを行うことなく、1つまたは2つの簡単な行動をすばやく追加する良い基盤を提供します。

私は数ヶ月間winformsコントロールを使用してきましたが、多くの場合、自分のコントロールで特定の(いくつかの、他の複雑な)ビヘイビアを実装しました。

0

私が知っているようなコントロールはありません。昔、私は同様のコントロールを書いてきましたが、それはDelphi用ですが、原則は同じです(限られたデータブロックを読み込んでレンダリングします)。だからあなたがそれを自分で実装することを決めた後、TextBoxコントロールから離れると、そのようなニーズにはあまり適していません。すべてのカスタムペイントで新しいコントロール子孫を作成する必要があると思います。それはあまり簡単ではありませんが、唯一正しい方法です。

2

コントロールにテキストの「数百MB」をロードすると、メモリ/パフォーマンスが非常に悪い考えのように聞こえます。プログラムがクラッシュする可能性があります。とにかく、何百万行もの行をどうやって読むのですか?あなたは本当にそこにテキスト全体が本当に必要ですか?あなたがバッファを持っていてRichTextBoxに少量のテキストをロードし、最後に到達したら(または終わり近く)、次の100(または他の任意の量)の行をロードする方が良いでしょう。または、何かを探している場合は、キーワードを検索してRichTextBoxに関連するテキストを入力します。それは本当にあなたがやろうとしていることにかかっています。

+0

これはまさに私が必要とするものです。あなたが今説明した方法でテキストファイルを処理し、現在表示されているテキストの量だけメモリにロードするコントロールです。 –

1

ScintillaまたはそのラッパーScintilla.Netを使用してチャンスがあると思います。私はそれが完璧な仕事ではないと思うが、それはTextBoxまたはRichtTextBoxよりもずっと良い。

0

各テキストボックス内の文字10.000あなたはテキストボックスを大きくする場合は、テキストを編集するか、スクロール時にプログラムを高速に実行されます私、最近発見thet .... .....の部分にテキストを表示...

関連する問題