2012-10-26 3 views
0

저는 초보자 인 C#입니다. 내 프로젝트에서 TreeView 컨트롤 안에 XML 파일을 채 웠습니다. xml 파일이 큰 경우 TreeView 컨트롤은 스크롤 막대가있는 데이터를 표시합니다. 이 옆에, 때마다 사용자를 두 번 클릭 노드 나는이 같은 선택된 노드 뭔가 옆 패널을 표시하고 ..TreeView 컨트롤에 패널을 연결하십시오.

enter image description here

나는 TreeView 컨트롤 스크롤하면 :

enter image description here

내 질문에 paneltreeView 컨트롤에 연결하는 방법입니다. 사용자가 TreeView 컨트롤을 스크롤해도 패널이 선택한 노드와 함께 이동해야합니다. .

+0

이것은 html 응용 프로그램입니까, 아니면 winforms 응용 프로그램입니까? – Heather

+0

WinForms..sorry 나는 항상 태그를 지키는 것을 잊는다 –

+0

선택된 노드 앞에 어떻게 그 패널을 보여 주나요 ?? – yogi

답변

2

글쎄, TreeView에는 Scroll 이벤트가 없으므로 수행하기가 어렵습니다. 노드가 확장 및 축소되어 노드의 위치와 가시성이 변경되므로 신뢰할 수 없습니다. 백업 계획은 타이머를 사용하는 것입니다. 이것은 잘 작동했습니다 :

private void timer1_Tick(object sender, EventArgs e) { 
     var node = treeView1.SelectedNode; 
     if (node == null || !node.IsVisible) panel1.Visible = false; 
     else { 
      panel1.Visible = true; 
      var nodepos = treeView1.PointToScreen(node.Bounds.Location); 
      var panelpos = panel1.Parent.PointToClient(nodepos); 
      panel1.Top = panelpos.Y; 
     } 
    } 
+0

정말 대단한 속임수 .. 나는 이것을 생각하지 않았다. 시도해 봅시다. –

+0

http://sourceforge.net/projects/treeviewadv/이 링크를 게시하려고했습니다. 그러나 이것은 어떤 복잡성없이 일을 끝내야합니다. –

+0

불행히도 그것은 작동하지 않습니다. 내가 그대로 코드를 붙여 넣었습니다. 변경해야합니까? (컨트롤 이름이 아니라 타이머 컨트롤도 추가했습니다.) –