2011-12-27 9 views
9

के पहले स्तर के बच्चों का विस्तार कैसे करें मैं डिफ़ॉल्ट रूप से वृक्षदृश्य पर पहले स्तर के सभी बच्चों को दिखाना चाहता हूं। और फिर क्लिक के उन सभी बच्चों का विस्तार करें।ट्रीव्यू

+1

दोहराएं नोड्स और उनके विस्तार करें() विधि कहते हैं। "क्लिक पर जो लोग" बहुत अस्पष्ट है। –

उत्तर

11

प्रयास करें:

foreach (TreeNode tn in treeView1.Nodes) { 
    tn.Expand(); 
} 

जब रनटाइम के दौरान नोड्स जोड़ने, तो आप सिर्फ स्तर की जांच और विस्तार कर सकते हैं, यदि आवश्यक हो तो:

private void ShoudAutoExpand(TreeNode tn) { 
    if (tn.Level == 0) 
    tn.Expand(); 
} 

कोई NodeAdded घटना आप यह देखना होगा कि में हुक कर सकते है खुद ब खुद। आपको खुद को निर्धारित करना होगा कि नोड को "डिफ़ॉल्ट रूप से" विस्तारित किया जाना चाहिए या नहीं।

अद्यतन:

अपनी टिप्पणी से ऐसा प्रतीत होता है जैसे आप सभी स्तर 0 नोड्स का विस्तार किया है करने के लिए है, लेकिन फिर स्तर 1 के सभी बच्चे नोड्स का विस्तार जब आप उन्हें विस्तार चाहते हैं।

कोशिश इस कोड के साथ BeforeExpand घटना की सदस्यता:

private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) { 
    treeView1.BeforeExpand -= treeView1_BeforeExpand; 
    if (e.Node.Level == 1) { 
    e.Node.ExpandAll(); 
    } 
    treeView1.BeforeExpand += treeView1_BeforeExpand; 
} 
+0

पहला भाग पहले स्तर के बच्चों को दिखाता है जैसा मैं चाहूंगा। लेकिन जब मैं उनमें से किसी पर क्लिक करता हूं तो उत्तराधिकारी बच्चे पूरी तरह से विस्तारित नहीं होते हैं। – zsharp

+0

@zsharp अपडेट किया गया कोड। ऐसा लगता है कि आप मूल रूप से सभी नोड्स को स्तर 1 नोड्स को छोड़कर "स्वचालित रूप से विस्तारित करना चाहते हैं। सही लगता है? – LarsTech

+0

वह है, मैं ऑनसाउसक्लिक के साथ कोशिश कर रहा था जो गड़बड़ था। धन्यवाद – zsharp

1

आप कुछ इस तरह की कोशिश कर सकते .. आप उदाहरण बदलने के लिए अपने स्वयं के कोड फिट करने के लिए होगा, क्योंकि आप किसी भी कोड पेस्ट करने की उपेक्षा है कि आप है या करने का प्रयास किया

private void addChildNode_Click(object sender, EventArgs e) 
{ 
    var childNode = textBox1.Text.Trim(); 
    if (!string.IsNullOrEmpty(childNode)) { 
    TreeNode parentNode = treeView2.SelectedNode ?? treeView2.Nodes[0]; 
    if (parentNode != null) { 
     parentNode.Nodes.Add(childNode); 
     treeView2.ExpandAll(); 
    } 
    } 
} 
1

यदि आप एक पुनरावर्ती चाहते हैं, यह प्रयास करें:

void expAll(TreeNode node) 
{ 
    node.Expand(); 
    foreach(TreeNode i in node.Nodes) 
    { 
     expAll(i); 
    } 
} 
1
private TreeNode ExpandUptoLevel(TreeNode tn,int level) 
    { 
     if (level != 0) 
     { 
      level --; 
      tn.Nodes[0].Expand(); 
      return ExpandUptoLevel(tn.FirstNode, level); 
     }        
     return tn; 
    } 
0

एक पेड़ में सभी नोड्स को एक स्तर तक विस्तारित करने के लिए उपर्युक्त कोड काम नहीं करता है। वास्तविक नोड स्तर को उस स्तर तक पढ़ने और तुलना करने के लिए बस एक चेक जोड़ें जिसे आप विस्तारित करना चाहते हैं। यहां एक कोड स्निपेट है।

private void ExpandUptoLevel(TreeNode tn, int level) 
    { 
     if (level >= tn.Level) 
     { 
      tn.Expand(); 
      foreach (TreeNode i in tn.Nodes) 
      { 
       ExpandUptoLevel(i,level); 
      } 
     } 
    } 
+0

रविंद्र सिनायर पोस्ट का जवाब - तुरंत ऊपर पोस्ट न करें। –

0

केवल पहले नोड्स को खोलने के लिए:

for (int i = 0; i< treeView1.Nodes.Count; i++) 
     { 
      treeView1.Nodes[i].Expand(); 
     } 
+0

हालांकि यह कोड स्निपेट प्रश्न हल कर सकता है, [एक स्पष्टीकरण सहित] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) वास्तव में आपकी पोस्ट की गुणवत्ता में सुधार करने में मदद करता है। याद रखें कि आप भविष्य में पाठकों के लिए प्रश्न का उत्तर दे रहे हैं, और वे लोग आपके कोड सुझाव के कारणों को नहीं जानते हैं। स्पष्टीकरण टिप्पणियों के साथ अपने कोड को भीड़ न करने का प्रयास करें, इससे कोड और स्पष्टीकरण दोनों की पठनीयता कम हो जाती है! – kayess