2012-09-18 30 views
0

我正在將數據寫入日誌文件,並且需要在我的WinForms UI中顯示該數據。我最初的想法是使用一個多行TextBox這樣的:在多行文本框中顯示日誌文件

private void UpdateUITextbox(string text) 
{ 
    textBoxStatus.AppendText(text + Environment.NewLine); 
} 

我沒有一個大量的文本寫我的日誌文件,但隨着時間的推移,它會加起來,我可能會最終超過無論多行文本框的默認最大長度是多少。我唯一能想到的方法是阻止OnKeyPress事件處理程序,並在添加內容之前檢查文本框的長度,並在必要時刪除舊文本以騰出空間較新的文本。但這似乎肯定會對性能產生影響。有人請告訴我有更好的方法來做到這一點?

+0

我會看看集合中的每一行,並綁定某種類型的中繼器。然後,您可以刪除集合中較舊的行,或者只需要一個篩選器,只顯示前x行。考慮甚至可以顯示100,000行的性能。 – Paparazzi

回答

2

Winforms TextBox有一個maximum length of 2GB

在擔心內存問題之前,您將不得不擔心可用性 - 如果日誌過長,您的用戶將無法有效使用它。

+0

2GB肯定是很多日誌數據,你提出了一個非常有效的觀點:這個大小的日誌的有效性。感謝您的反饋。 – user685869

0

我們使用AvalonEdit顯示我們的日誌。它可以很好地擴展到數十萬行。

0

而不是多行文本框爲什麼不使用列表框?
對於日誌,最好在日誌中添加更多信息,同時保存日誌,例如時間。
並在加載時讀取每個在您認爲相當近的範圍內有日期戳的行。 一次加載所有日誌文件並不明智。只加載新的。
如果您需要查看較早的日誌,您仍然可以使用時間/日期戳記解決方案進行管理。

+0

嗨侯賽因。感謝您的建議!我很感激。 – user685869

+0

@ user685869:您的歡迎;) – Breeze

相關問題