TreeView의 .CollapseAll() 메서드 나 TreeNode에서 .Collapse() 메서드 호출 이외의 TreeView가 축소되는 이유는 무엇입니까?WinForms에서 TreeView가 갑자기 닫히는 이유는 무엇입니까?
현재 개발중인 응용 프로그램에서 TreeView가 제대로 작동하지 않습니다. TreeView는 두 가지 수준 만 유지합니다. 부모 노드의 자식을 선택하면 다른 모든 노드가 즉시 축소됩니다. 그러나, 내 코드에는 .Collapse() 또는 .CollapseAll() 메서드 호출이 전혀 없습니다!
TreeView의 모든 속성은 true로 설정된 .LabelEdit 속성을 제외하고는 기본값으로 유지됩니다. TreeView 간단한 Validation/MessageBox 루틴에 대한 AfterLabelEdit 이벤트 내에서 연결된 일부 코드가 있습니다.
나는 시도했다 :
- 후킹 BeforeCollapse의 TreeView에의 이벤트와 e.CancelAction 플래그를 제기.
TreeView의 AfterSelect 이벤트에서 모든 노드 을 수동으로 확장합니다. (이는 실험으로 잘 작동하지만 내가
모두 해제하면 노드 붕괴하지 않을!) 코드 내에서 많은 점에서
, 나는에, 노드의 트 리뷰를 통해 노드를 반복하고 속성을 확인하십시오. 그러나 노드 추가 또는 삭제가 발생하지 않습니다. 사용자가 선택할 때 수정되는 유일한 TreeNode 속성은 .ImageIndex 및 .SelectedImageIndex입니다.
위의 두 가지 해결책 외에도이 오류의 원인에 대한 단서가 없습니다. 솔루션을 실현할 수 없더라도 누군가가 붕괴를 감추고 갈 수있는 적절한 방법에 대한 아이디어를 갖고 있습니까? (필자는 BeforeCollapse 이벤트 내에서 중단 점을 설정하려고했지만, 사용자가 명시 적으로 마우스 나 키보드를 통해 노드를 축소하지 않는 한이 트리거되지 않습니다.)
UPDATE :
문제는 들어간 상태로 인해 TreeNode의 .SelectedImageIndex 속성 이 속성을 변경하면 다른 모든 노드가 축소됩니다.
.BeginUpdate() 및 .EndUpdate() 호출로 아무 소용이없는 .SelectedImageIndex 속성 수정 코드를 둘러 봤습니다.
어떻게 피할 수 있습니까?
종합적인 답변 주셔서 감사합니다. 트리를 다시 만드는 원인이되는 속성을 찾아 낼 수 있었고 초기화 시점을 지나서 사용하지 않았습니다. 트리가 더 이상 노드 상태를 잊지 않습니다. – James
@HansPassant가 내 편집을 롤백 한 이유를 알고 있습니까? 감사 –