Development Tip

C# listbox를 자동 스크롤되도록 만들기

MoonLight314 2024. 2. 15. 13:30
728x90

안녕하세요, MoonLight입니다.

이번 Post에서는 C#으로 Winform Application을 만들다 보면, Log나 Message를 연속으로 출력해 주는 Control이 필요한 경우가 가끔 생기기도 합니다.

이런 기능을 제공하는 Control이 있는지 Visual Studio 찾아보니 기본 도구 상자에는 이와 같은 기능을 제공해 주는 Control은 없는 것 같아서

ListBox를 이용해서 한 번 만들어 보려고 합니다.

최종적으로 구현하려는 기능 다음과 같습니다.

- Text 형식의 Log Message를 Control에 추가가능

- Log Message를 추가하면 자동으로 Scroll되고, 최종적으로 추가한 Log Message가 가장 하단에 보이도록 구성

우선 아래와 같이 간단한 WinForm Application을 만들어서 Test 하려고 합니다.

Button을 하나 만들고, '시작'이라고 Text를 바꾸고 이것을 Click하면 아래 함수가 실행되도록 합니다.

this.listBox1.Items.Add("Count : " + Count.ToString());
this.listBox1.TopIndex = this.listBox1.Items.Count - 1;

TopIndex 속성은 ListBox Item중에서 가장 Top(보이는 방향으로는 아래쪽)의 Item Index를 나타냅니다.

 

https://learn.microsoft.com/ko-kr/dotnet/api/system.windows.forms.listbox.topindex?view=windowsdesktop-8.0

 

이 값을 이용하여 ListBox를 Scroll할 수 있는데, 이 값을 this.listBox1.Items.Count보다 1작게 하면 항상 최종 Item을 가장 아래쪽에 보이도록 할 수 있습니다.

( Index는 0부터 시작하고, Count는 1부터 시작하기 때문에 1 작게 설정해줘야 합니다. )

결과는 아래와 같이, 값을 추가하면 ListBox가 아래쪽으로 Scroll되는 것을 확인 할 수 있습니다.

도움이 되셨기를 바랍니다.

그럼 다음에 또 만나요~!

728x90