문제

TreeView의 .collapse () 메소드를 호출하는 것 외에 TreeView가 TreeView의 .collapse () 메소드를 호출하는 것 외에는 TreeView가 붕괴되는 원인은 무엇입니까?

내가 개발중인 응용 프로그램에서 TreeView는 단순히 제대로 작동하지 않습니다. TreeView는 두 단계 만 유지합니다. 상위 노드의 자식을 선택할 때 다른 모든 노드가 즉시 붕괴됩니다. 그러나 내 코드에 .collapse () 또는 .collapseall () 메소드 호출이 없다!

treeview의 모든 속성은 .labeledit 속성을 제외한 기본값에 남겨져 있으며, 이는 true로 설정됩니다. TreeView에는 간단한 검증/MessageBox 루틴을 위해 내세 이벤트 내에 관련된 코드가 있습니다.

나는 시도했다 :

  • TreeView의 Beforecollapse 이벤트를 연결하고 E.Cancelaction 플래그를 올리십시오.

  • TreeView의 AfterSelect 이벤트 내에서 모든 노드를 수동으로 확장합니다. (이것은 실험으로 잘 작동하지만 노드 붕괴를 허용하지 않을 것입니다.
    전부!)

코드 내의 여러 지점에서, 나는 속성을 확인하기 위해 TreeView, 노드를 통해 노드를 통해 반복하고 있습니다. 그러나 노드의 추가 또는 삭제는 발생하지 않습니다. 사용자가 선택할 때 수정 된 유일한 트리 노드 속성은 .imageIndex 및 .SelectedImageIndex입니다.

위의 두 솔루션 외에이 오류를 일으킬 수있는 것에 대한 단서가 없습니다. 솔루션을 실현할 수 없더라도 붕괴를 포획하는 적절한 방법에 대한 아이디어가있을 수 있습니까? (BeforeCollapse 이벤트 내에서 중단 점을 설정하려고 시도했지만 사용자가 마우스 나 키보드를 통해 노드를 명시 적으로 무너 뜨리지 않으면 트리거되지 않습니다.)


업데이트:

문제는 모든 Treenode에서 .SelectedImageIndex 속성을 으르기 때문입니다. 이 속성을 변경하면 다른 모든 노드가 붕괴됩니다.

.beginupdate () 및 .endupdate () 호출을 사용하여 .SelectedImageIndex 속성 수정 코드를 둘러싼 시도를 시도했습니다.

이것은 어떻게 피할 수 있습니까?

도움이 되었습니까?

해결책

이것은 Windows에서 기본 Windows가 작동하는 방식의 부작용입니다. 많은 창 옵션은 CreateWindowEx () 호출의 스타일 플래그별로 지정됩니다. 국경이 형태에서 어떻게 보이는지와 같은 기본 물건. ListView가 어떤 견해를 가지고 있어야합니다. 트리 뷰에 확인란을 표시 해야하는지 여부

이 스타일은 컨트롤의 속성으로 노출됩니다. 그러나 문제가 있습니다. 이러한 속성을 변경하려면 창작물을 처음부터 다시 만들어야하여 CreateWindowEx () 호출에 새로운 스타일 플래그를 지정할 수 있습니다. 부작용이 있으면 창이 완전히 재현되어 이전 상태를 모두 잃어 버립니다.

Windows Forms는 창을 재현 한 후 이전 상태를 복원 하여이 상태를 매끄럽게 보이게하는 데 아주 좋습니다. 그러나 여기 저기 누출이 있습니다. 그리고 몇 가지 명백한 버그. TreeView의 누출 중 하나는 노드가 무너지고 그렇지 않은 정확한 상태입니다. 이것을 추적하는 것은 실용적이지 않습니다.

트리 뷰의 핸들 속성을 시계 창에 넣어서 이것을 진단하십시오. 변화가 바뀌면 속성을 찾았습니다. 스타일 플래그 목록을 사용할 수 있습니다 여기, 아마도 그들의 이름을 해당 속성에 매핑 할 수 있습니다.

아마도 그 속성을 바꾸는 것을 피하는 것 외에이 문제에 대한 큰 해결 방법이 없다는 것이 분명 할 것입니다. 이와 같은 문제는 WPF를 구걸하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top