시샵 C# ListView 마지막에 추가한 데이터에 스크롤 위치시키는 방법

C# & MFC

시샵 C# ListView 마지막에 추가한 데이터에 스크롤 위치시키는 방법

 

환경: Visual Studio 2013

 

C# ListView 에서 데이터를 계속 추가하다 보면 스크롤이 생기고 최근에 추가한 데이터는 뒤로 밀려서 볼 수가 없게 됩니다. 최신 데이터를 제일 앞으로 배치 시킨다면 스크롤이 생겨도 이전 데이터들이 밀려서 내려가기 때문에 상관이 없습니다. 만약 리스트의 끝에 계속해서 데이터를 추가해 나갈 때 최신 데이터를 보고 싶으면 어떻게 해야 할까요?

 

먼저 string 배열을 이용해서 데이터들을 ListView 에 추가합니다. 이렇게 계속해서 추가하다 보면 최근 데이터는 리스트의 끝에 추가되기 때문에 스크롤을 내려야 볼 수 있습니다.

// 실시간 데이터 표시 하기 
string[] strData = { e.sRealKey,                                           // 종목코드
                        axKHOpenAPI1.GetCommRealData(e.sRealType, 10).Trim(), // 현재가
                        axKHOpenAPI1.GetCommRealData(e.sRealType, 12).Trim(), // 등락율
                        axKHOpenAPI1.GetCommRealData(e.sRealType, 16).Trim(), // 시가
                        axKHOpenAPI1.GetCommRealData(e.sRealType, 17).Trim(), // 고가
                        axKHOpenAPI1.GetCommRealData(e.sRealType, 18).Trim()  // 저가
                    };

var listViewItem = new ListViewItem(strData);
listView1.Items.Add(listViewItem);

시샵 C# ListView 마지막에 추가한 데이터에 스크롤 위치시키는 방법

 

가장 최근에 추가한 데이터들을 보려면 스크롤이 ListView 의 제일 하단에 내려가 있어야 합니다. 그 역할을 할 수 있는 것이 EnsureVisible 함수 입니다. EnsureVisible 함수는 필요한 경우 컨트롤의 콘텐츠를 스크롤하여 지정한 항목을 보여 주고 싶을 때 사용합니다. 인수 값으로 ListView 의 개수를 넘기면 마지막 값을 보여 주게 되겠죠

// 항상 마지막 아이템이 선택되도록 설정한다.
listView1.EnsureVisible(listView1.Items.Count - 1);

 

만약 EnsureVisible 함수가 적용되지 않는다면 ListView.TopItem 속성을 사용해 보세요. 이 속성은 제일 먼저 컨트롤에 표시할 항목을 세팅할 수 있습니다. 직접 표시할 Item 을 속성값으로 세팅하는 것입니다. listView1.Items[listView1.Items.Count - 1]; 는 마지막에 추가한 데이터를 나타냅니다

// 항상 마지막 아이템이 선택되도록 설정한다.
listView1.TopItem = listView1.Items[listView1.Items.Count - 1];

그림처럼 마지막에 추가한 Item 객체를 TopItem 속성으로 입력하게 되면 최근에 추가한 데이터를 화면에서 볼 수 있습니다

시샵 C# ListView 마지막에 추가한 데이터에 스크롤 위치시키는 방법


저작자 표시 비영리 변경 금지
신고
Posted by 녹두장군