2013-01-17 21 views
0

我有一個非常簡單的形式,其中包含RichTextBox字段。它充當一個粗略的日誌文件查看器。隨着日誌數據被添加到文件中,我將新數據添加到文本框中。這很好用,但我想阻止文本框在添加新數據時滾動,以便讀取當前可見的數據。我嘗試了一段時間,最終我不得不調用原生SendEvent函數來獲取和設置附加文本前後的滾動位置。但是,這個功能也很出色,但是現在我遇到了一個新問題:隨着時間的推移,日誌文件可能會變得非常大,並且會使用大量內存將日誌文件的全部內容保留在文本框中。所以現在我所做的就是在文本大小達到特定閾值時通過從開始刪除文本來限制文本框中的文本數量。在RichTextBox中維持文本位置,同時將文本分別添加到末尾和開始處

所以,現在我的問題是,我可以保持滾動的位置,但文本會改變,因爲我從開始刪除文本。有沒有簡單的方法來改變滾動位置以保持可讀性(顯然,如果用戶正在閱讀文本框的第一行,並且被刪除,那麼沒有任何可以完成的事情,但我認爲這是可以接受的)?

下面是一個例子:假設我的閾值是1MB的文本在文本框中。如果當前有1MB的文本,並且我需要追加1000個字符,那麼我還需要從頭開始刪除1000個字符。如果我滾動到文本的中間,那麼在刪除和附加文本後,我可以保留該滾動位置,但是現在我正在閱讀的文本會更進一步。

也許我需要重新考慮我的方法?

+0

如果您知道從一開始就刪除了** n **個字符,難道您不能簡單地將克拉移回** n **個字符(或者如果結果爲負數,則將其移至位置0)? –

+0

這是一個很好的建議,但插入符號不隨滾動位置移動。即使這樣做,這可能會干擾文本選擇。 – JasonA

回答

0

我意識到在用戶查看文本時修改文本並沒有什麼意義。所以我決定添加一個選項來將這個表單凍結到文本框中。凍結時,不會附加或刪除文字,用戶可以自由滾動。正常情況下解凍所有的附加/刪除工作。

相關問題