Study/C#(Window programming)
c# RichTextBox 텍스트 라인 유지(FIFO방식)
Answer Choi
2020. 8. 20. 18:57
반응형
일반적인 터미널을 보게되면, 버퍼가 가득차면 오래된 로그부터 사라집니다.
c#에서도 터미널처럼 제일 오래된 라인부터 없애고 텍스트 박스의 텍스트를
일정 라인수만큼 유지할 수 있습니다.
int maxline = 10000;
if (messageRich.Lines.Length > maxline)
{
messageRich.Select(0, messageRich.GetFirstCharIndexFromLine(messageRich.Lines.Length - maxline));
messageRich.SelectedText = "";
messageRich.AppendText("\n");
}
else
{
messageRich.AppendText("\n");
}
messageRich.ScrollToCaret();
messageRich가 RichTextBox입니다.
Line 1의 maxline은 최대 표시할 라인수입니다.
Line 2~Line 5 : 이부분이 실질적으로 라인을 유지시켜주고, 초과된 앞 라인을 없애주는 부분입니다.
원리는 초과된 라인을 다 ""로 글자를 없애버립니다.
Line 6 : 줄바꿈을 하는 이유는 만약 뿌려주는 글자가 색이 있는 경우 저런식으로 줄바꿈을 해줘야
원래 지정해 놓은 색이 그대로 출력됩니다.
만약 안하면 검은색으로 나오게 됩니다.
scrolltocaret은 스크롤을 제일 밑으로 내려오게 합니다.
반응형