2014-12-22 2 views
1

나는 수퍼 클래스로 중첩 된 약 4-5 클래스를 가지고있다. 두 개의 개별 treeviews 윈도우에 표시하기 위해 정보를 보유하고 orginze하는 다른 클래스에 대한 보류 포인터를 만든다. . 이제 내가 가진 문제는 mouseclick eventfrom treeview가 이벤트가 트리거 될 때 텍스트 상자에 텍스트를 표시하려고 할 때입니다. 태그 속성을 사용하고 자식 노드에 대한 포인터를 할당하는 데 지겨워졌습니다. 그러나 어떤 이유로 든 루트 노드 노드가 있고 자식 노드가 아닌 객체 만 반환합니다.여러 클래스와 속성을 가진 treeview 태그를 할당하는 방법

void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) 
    //handler for mouse click,this method show on textbox info on field 
    {  
     try 
     { 
      int num = e.Node.Text.IndexOf(" "); 
      String key = e.Node.Text.Substring(0,num-1); 
      //MessageBox.Show(key); 
      HostClass ptr = (HostClass)e.Node.Tag; // <-this is the tricky part of my code!! 
      textBox1.Text = ptr.PcidescDict[key]; 
     } 
    } 

당신은 어떤을해야합니까 : 여기

foreach (HostClass ptr in HostClassHolderlist) 
{ 
subpcirootnode = pcirootnode.Nodes.Add("PCI CONFIG REGISTERS"); 

foreach (KeyValuePair<string, UInt32> entry in ptr.PrintHT) 
{ 
     treeView1.CheckBoxes = true; 
     uint tmp = entry.Value; 
     subpcirootnode.Tag = ptr;//hostclass pointer 
     subpcirootnode.Nodes.Add(entry.Key.ToString() + ": 0x" + tmp.ToString("X")); 
    } 
} 

내가에 오류가있는 부분이다 : 여기

IMG http://i61.tinypic.com/2cqbjf9.png[/IMG]

내가 개체 태그를 지정하는 부분입니다 제대로 구성하는 방법에 대한 제안? 당신은 자식 노드에 태그를 지정하지 않는

+0

값을 할당하고 읽으려는 코드를 게시하십시오. 당신이하려는 일은 잘 작동해야합니다. – CathalMF

+0

코드가 길어 (여러 클래스가있는 약 3000 줄), 태그 값을 읽고 예외를 가져 오려고하는 코드에 일부를 표시 할 수 있습니까? – user3365107

답변

1

:

subpcirootnode.Nodes.Add(entry.Key.ToString() + ": 0x" + tmp.ToString("X")); 

그래서 변경 것과 :

TreeNode tn = new TreeNode(entry.Key.ToString() + ": 0x" + tmp.ToString("X")); 
tn.Tag = ptr; 
subpcirootnode.Nodes.Add(tn); 

이 코드에 대해 충분히 알고 있지만, 자식 노드의 모든하지 마십시오 동일한 클래스 참조를 얻으므로 어떤 이점이 있는지 분명하지 않습니다. e.Node.Parent 클래스가 null이 아닌지 확인하고 부모의 Tag 속성을 확인하여 동일한 정보를 얻을 수 있습니다.

+0

대신 e.Node.Parent를 사용하도록 변경했습니다. 팁을 주셔서 감사합니다. 그렇지 않으면 그것에 대해 생각하지 않을 것입니다. – user3365107

관련 문제