데이터베이스의 내용을 멋지게 표시하는 Winforms의 가상 ListView가 있습니다. 항목은 데이터베이스에 비동기 적으로 추가되며 스크롤 막대를 아래로 당길 때 표시됩니다.프로그래밍 방식으로 가상 ListView의 아래쪽 행을 표시하는 방법
이제 비동기 스레드가 데이터베이스에 추가 될 때마다 ListView가 업데이트되어 맨 아래 행에 어떤 인덱스가 있어야 하는지를 알고 싶습니다. 내가 ListView에 객체를 추가하기 전에, 나는 ItemHeight를하고 목록 상자의 높이를 기반으로, 상단 인덱스해야하는 인덱스 세트리스트 박스로 그렇게 할 수 있습니다 :
int numItems = listBox1.ClientSize.Height/listBox1.ItemHeight;
if (listBox1.TopIndex == listBox1.Items.Count - numItems - 1)
listBox1.TopIndex = listBox1.Items.Count - numItems + 1;
불행하게도 둘 ItemHeight를도 TopIndex리스트 뷰에 존재하지 않습니다.
하지만 중요한 질문은 : 특정 인덱스 범위를 표시하거나 일부 인덱스가 표시되도록 가상 ListView에 지시하려면 어떻게해야합니까?
이 왜 이벤트 CollectionChanged를 사용할 수 있습니까? 새 행을 표시하려면 listview에 데이터 소스 변경 사항을 알릴 필요가 있습니다. –
@ Na Na : ObservableCollection의 일부인 CollectionChanged를 사용하는 방법을 모릅니다. 예제를 보여줄 수 있습니까? –
erict