2013-01-23 4 views
1

ObjectListView은 본질적으로 표준 .NET 래퍼 인 ListView입니다. 내 문제는 컨트롤에 새 객체를 추가하고 컨트롤을 스크롤하여 객체가 표시되는지 확인하고 객체를 선택하는 올바른 메서드 호출 순서를 파악할 수 없다는 것입니다. 아래,이 코드를 달성하기 위해 내 코드입니다. 모든 것이 작동하지만 어떤 이유로 열을 클릭하거나 크기를 변경할 때까지 선택한 항목/객체의 배경색이 표시되지 않습니다. 컨트롤에 초점이 맞춰지지 않았는지 또는 무엇인지 잘 모르겠습니다.ObjectListView 선택 항목에 대한 선택 색상이 표시되지 않습니다.

// objectListViewItems is of type BrightIdeasSoftware.ObjectListViewItems 
objectListViewItems.AddObject(e.InsertedItem); 
objectListViewItems.Refresh(); 
objectListViewItems.Focus(); 
objectListViewItems.EnsureModelVisible(e.InsertedItem); 
objectListViewItems.SelectedObject = e.InsertedItem; 
objectListViewItems.Focus(); 

아래 코드는 ObjectListView의 항목을 업데이트하고 올바르게 작동합니다. 내가 무엇을 잘못하고 있는지 잘 모르겠다. ...

답변

4

이것은 내가 여러 번 제안한 것처럼 작동해야한다. 그러나 Refresh()과 두 번째 Focus()을 호출하는 것은 필요하지 않습니다. 또한 나는 속성보다 SelectObject()을 사용하려고합니다. 이처럼

:

objectListView.AddObject(newItem); 
objectListView.Focus(); 
objectListView.EnsureModelVisible(newItem); 
objectListView.SelectObject(newItem); 

는 또한, 다른 컨트롤에 포커스를 취득시키는 수 나중에 실행에는 코드가 없다는 것을 확인합니다.

당신은 정상 ListView에 관해서는

objectListView.HideSelection = false; 

설정을 시도 할 수, 무슨 일이 일어나고 있는지 좁히려면, 이것은 현재의 선택 범위가 유지되도록 볼 수 있으며 ("회색으로") 컨트롤이 포커스를 잃을 경우에도.

디자이너를 사용한 경우 완전한 OLV 구성 (InitializeComponent())을 게시하십시오. 어쩌면 이걸 일으키는 이상한 별자리가있을 수 있습니다.

+0

해결책 주셔서 감사합니다 ... 위의 코드는 사용자 정의 EventHandler에 있습니다. Windows 코드를 통해 모든 단계를 밟았을 때 컨트롤이 포커스를 잃고 선택되지 않게되는 상황이 발생한 것처럼 보였습니다. 이벤트 처리기 밖으로 코드를 이동하고 잘 작동했습니다. 오늘은 HideSelection = false로 설정하고 이벤트 처리기로 다시 이동하여 어떤 일이 발생하는지 확인하려고합니다. – Grasshopper

+0

Hideselection = false는 나를 도왔습니다! –

관련 문제