フィールドを持つ非常に単純なフォームがありRichTextBox
ます。これは粗雑なログ ファイル ビューアーとして機能します。ログ データがファイルに追加されると、新しいデータをテキスト ボックスに追加します。これはうまく機能しますが、現在表示されているデータを読み取ることができるように、新しいデータが追加されたときにテキスト ボックスがスクロールしないようにしたかったのです。私はこれをしばらく試しましたが、最終的にネイティブSendEvent
関数を呼び出して、テキストを追加する前後のスクロール位置を取得および設定する必要がありました。これも問題なく機能していますが、新しい問題が発生しました。時間の経過とともにログ ファイルが非常に大きくなり、ログ ファイルの内容全体をテキスト ボックスに保持するために膨大な量のメモリが使用される可能性があります。そこで、テキスト サイズが特定のしきい値に達した場合にテキストを最初から削除することで、テキスト ボックス内のテキストの量を制限しました。
今私の問題は、スクロール位置を維持できることですが、最初からテキストを削除しているため、テキストが変更されます。読みやすさを維持するためにスクロール位置を変更する簡単な方法はありますか?
以下に例を示します。私のしきい値がテキスト ボックス内のテキストの 1MB であるとします。現在 1MB のテキストがあり、1000 文字を追加する必要がある場合は、先頭から 1000 文字を削除する必要もあります。テキストの途中までスクロールすると、テキストを削除して追加した後もそのスクロール位置を維持できますが、読んでいたテキストはさらに上にあります。
多分私は私のアプローチを再考する必要がありますか?