사용자 임계 값을 초과하는 속성으로 행을 강조 표시하는 RowFormatter가있는 ObjectListView이 있습니다. 사용자가 임계 값을 변경하면 RowFormatter를 다시 호출하여 항목을 다시 그리기위한 컨트롤이 필요하므로 새 임계 값이 시각적으로 적용됩니다. 컨트롤을 무효화하는 것은 아무 것도하지 않는 것 같습니다. 컨트롤에 45000 개의 개체가 있으므로 SetObjects를 다시 호출하면 3-5 초가 지연됩니다. 거기 보이는 개체에 RefreshObjects()를 호출 할 수있는 방법이 있습니까?ObjectListView 표시 항목에 강제로 새로 고침을 적용 하시겠습니까?
1
A
답변
0
나는 이런 식으로 뭔가를 실행했다 가지고 올 수있는 최선 :
int lvi = myOLV.TopItemIndex;
for (int i = 0; i < 30; i++)
myOLV.RefreshItem((OLVListItem)myOLV.Items[i + lvi]);
때마다 서식 규칙이 변경 행. 이렇게하면 목록보기에 표시된 처음 30 개의 항목이 새로 고쳐집니다. 나는 누군가가 크기가 큰 대형 모니터를 사용하여 충분하지 않을 수도 있다고 생각합니다. 그러나 그것은 빠르며 나를 위해 일합니다.
0
대신 FastObjectListView을 사용하는 것이 좋습니다. 그것의 구현은 VirtualObjectListView보다 빠르며 ObjectListView보다 빠릅니다. 구현 세부 사항에 대해서는 확신 할 수 없지만 필요한 경우/볼 때 객체를 처리/업데이트하는 것만으로도 핵심을 정확히 수행 할 수 있다고 생각합니다.
약간의 제한 사항이 있습니다 - 그것은 타일보기 을 사용할 수 없습니다 - 그것은 애니메이션 GIF 를 표시 할 수 없습니다 - 그것은 XP
에 그룹을 표시 할 수 없습니다그, 그것은 다른되어야한다는 드롭 - 인 - 교체하는 경우 당신은 특히 공상적인 일을 아무것도하지 않습니다.
대부분의 사용 사례는 실제로 TreeListViews이므로 FastObjectListView는 옵션이 아닙니다. 또한 객체 자체는 전혀 변경되지 않습니다. 행 서식 지정 규칙. – user2004760