2012-02-21 2 views
1

.NET의 양식에 ListView가 있습니다.WinForms ListView 양식이 숨겨진 후 SelectedIndices가 비어 있습니다.

void buttonOK_click() 
{ 
    Assert(listView.SelectedIndices.Count > 0); 
    DialogResult = DialogResult.OK; 
} 

그러나 모달 폼을 반환 후 :

양식이 SelectedIncides이 존재하고 유효 숨겨져 전에

form1.ShowDialog(); 
Assert(form1.listView.SelectedIndices.Count > 0); 

이 두번째 주장은 실패합니다.

ListView 인 것을 어떻게 읽었습니까 (파괴/폐기/해제되지는 않았지만).

+4

'SelectedIndices' 컬렉션은 양식이 닫혀 있다는 사실로 인해 변경할 수 없습니다. 해고 될 수있는 다른 이벤트를 확인하고 항목을 선택 취소하는 것이 좋습니다. 'ShowModal'은'ShowDialog'을 의미합니다 - 모달 대화 상자를 표시합니까? –

+1

다른 사용자는 selectedindices에 문제가있었습니다. (http://stackoverflow.com/questions/304844/why-do-selectedindices-and-selecteditems-not-work-when-listview-is-instantiated) – Steve

답변

1

선택한 인덱스 중 List (또는 이에 상응하는 금액)을 보유하는 form1에 public var를 사용할 수 있습니까? form1을 form closing 이벤트로 설정하십시오. 컨트롤이 원래 폼으로 되돌려지면 대신에 액세스 할 수 있습니까?

+0

나는이 정확한 해결책을 사용하지 않았지만, 똑같이 해로운 해킹으로 작동하게 만들었다. –

+0

몇 달 전에이 정확한 문제를 해결해야했지만, 우리 중 누구도 더 나은 방법을 찾지 못했습니다! – Bridge

1

프리웨어 구성 요소 Better ListView Express 또는 완전한 을 사용해 볼 수 있습니다. 여기에서는 SelectedIndices 문제뿐 아니라 일반적인 .NET ListView의 다른 알려진 버그도 해결했습니다.

+0

또는 ObjectListView 또는 다른 타사 컨트롤. –

+0

음, ObjectListView는 .NET ListView 래퍼입니다. 따라서이 컨트롤은 우수한 컨트롤이라고 생각하지만 일부 결함을 상속하며 오브젝트 모델은 아직 완전히 다릅니다 (재 학습해야 함). 다른 타사 컨트롤도 원래 ListView 인터페이스에서 벗어날 수 있습니다. 그러나 실제로 SelectedIndices 문제가 수정 된 가능한 대안이 있습니다. – Libor

관련 문제