0

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

今私の問題は、スクロール位置を維持できることですが、最初からテキストを削除しているため、テキストが変更されます。読みやすさを維持するためにスクロール位置を変更する簡単な方法はありますか?

以下に例を示します。私のしきい値がテキスト ボックス内のテキストの 1MB であるとします。現在 1MB のテキストがあり、1000 文字を追加する必要がある場合は、先頭から 1000 文字を削除する必要もあります。テキストの途中までスクロールすると、テキストを削除して追加した後もそのスクロール位置を維持できますが、読んでいたテキストはさらに上にあります。

多分私は私のアプローチを再考する必要がありますか?

4

1 に答える 1

0

ユーザーがテキストを表示している間にテキストを変更しても意味がないことに気付きました。そこで、このフォームにオプションを追加して、テキスト ボックスへの更新を「凍結」することにしました。フリーズすると、テキストは追加または削除されず、ユーザーは自由にスクロールできます。凍結を解除すると、すべての追加/削除が正常に機能します。

于 2013-01-18T18:21:13.380 に答える