2011-06-22 16 views
16

साफ़ करें मैं एक सूची से एक वृक्ष दृश्य लोड कर रहा हूं, और उपयोगकर्ता के पास एक आइटम को हटाने के लिए एक बटन है और यह सूची से इसे हटा देता है, लेकिन सूची के साथ TreeView को अपडेट करने के लिए एक बटन भी है आइटम हटा दिए गए हैं, मुझे TreeView में नए आइटम जोड़ने में कोई समस्या नहीं है, लेकिन क्या मैं नए आइटम जोड़ने से पहले TreeView में सभी आइटम साफ़ करने का कोई तरीका है, इसलिए मेरे पास TreeView में डुप्लिकेट नहीं हैं? मैं जवाब के लिए इंटरनेट पर अन्य स्थानों पर तलाश की कोशिश की है, लेकिन नहीं कर सकते यह मिल जाए, मैं की तरह साधारण चीजों की कोशिश की है:एक TreeView

treeView1.Items.Clear(); 

लेकिन यह काम नहीं करता।

क्षमा करें, मैंने इसे एक टिप्पणी पर उल्लेख किया है, नीचे मुझे यकीन है कि यह लाइन वास्तव में इसे साफ़ करती है, मैं बस इसे सही जगह पर उपयोग नहीं कर रहा हूं, आपके उत्तरों के लिए धन्यवाद।

+5

क्या आपने 'treeView1.Nodes.Clear()' की कोशिश की है? –

+1

इसमें देखा गया, यह आपको नोड्स – Beef

+0

नहीं करने देता है क्या आप सुनिश्चित हैं कि आपका 'treeView1' एक TreeView है? मेरे पास '.Theems' के लिए कोई विकल्प नहीं है, केवल 'नोड्स'। –

उत्तर

3

सबसे पहले कोशिश करते हैं और साफ अपने उदाहरण में पूंजीकृत किया जाना चाहिए था। शायद यह एकमात्र समस्या है।

दूसरा, यदि आप अपने आइटमसोर्स को सेट करके पेड़ को पॉप्युलेट कर रहे हैं, तो आपको हाथ से अपने आइटम संग्रह से आइटम जोड़ने और निकालने की अनुमति नहीं है। इसके बजाय, आपको स्रोत को सूची के बजाय एक अवलोकन करने योग्य चयन करना चाहिए। फिर वृक्षदृश्य स्वचालित रूप से स्रोत संग्रह

+0

को पहचान नहीं रहा है, जो कार्यक्रम में पूंजीकृत हैं, बस पेड़ को पॉप्युलेट करने के लिए, प्रश्न में भूल गए हैं, मैं एक नया ऑब्जेक्ट TreeViewItem जैसे rootDir बना देता हूं और इसमें आइटम जोड़ता हूं, फिर पेड़ में जोड़ें इस तरह देखें: treeView1.Items.Add (rootDir); – Beef

+0

@ बीईएफएफ ने इस व्यवहार को प्रदर्शित करने के लिए सबसे छोटे परीक्षण कार्यक्रम को लिखने की कोशिश की है? कभी-कभी प्रतीत होता है कि असंबद्ध जटिलताओं को रास्ते में मिल सकता है, खासकर जब जीयूआई नियंत्रण वाले काफी जटिल जानवरों से निपटना। –

+0

Ive TreeView1 के साथ खेल रहा था ITems.Clear(); रेखा और मुझे लगता है कि यह समाशोधन कर रहा है, लेकिन मुझे कहीं और पेड़ के दृश्य में भी जोड़ना होगा, अगर मैं लाइन पर टिप्पणी करता हूं तो यह दो बार देखा जाता है, तो शायद मैं इसे गलत स्थान पर प्राप्त कर सकता हूं – Beef

0

आप

सब, आइटम की
treeView1.DataBind(); 
+1

मैंने पहले ऐसा नहीं किया है, क्या मुझे पुस्तकालय की आवश्यकता है? कारण इंटेलिजेंस इसे – Beef

34

में परिवर्तन को दर्शाने के लिए स्वचालित रूप से अपडेट हो जाएगा, एक वृक्षदृश्य को साफ़ करने के लिए, आप नोड साफ़ करते हैं।

treeView1.Nodes.Clear(); 
+0

मेरे लिए ठीक काम किया! – MBH

0

रीफ्रेश करते समय इसे साफ़ करने के बाद ट्री व्यू को पॉप्युलेट करने के लिए मेरे पास एक पुनरावर्ती विधि थी। मैं संदर्भ के आधार पर ट्री नोड को पार कर रहा था और यह नोड्स को दृश्यमान और ट्री व्यू में चयन करने योग्य बना देगा, भले ही स्पष्ट रूप से उन्हें नोड्स सूची से हटा दिया गया हो। जब मैंने पेड़ नोड को मूल्य से पारित करने के लिए विधि को बदल दिया, तो उसने मुझे नोड्स को साफ़ करने की अनुमति दी। नीचे दिए गए नमूने में ByRef को ByVal (VB.NET के लिए) में बदला जाना था।

Private Sub DisplayPackageSubTree() 
    trvEntries.Nodes.Clear() 
    trvEntries.SelectedNode = trvEntries.Nodes.Add("Node0", "Root Node", -1, -1) 

    DisplayFolderTree(_folderContents, trvEntries.Nodes(0)) 

    trvEntries.ExpandAll() 
    trvEntries.SelectedNode = trvEntries.Nodes(0) 
    trvEntries.Refresh() 
End Sub 

Private Sub DisplayFolderTree(ByVal folderContents As SubFolder, ByRef folderNode As TreeNode) 
    For Each entry As SubEntry In folderContents.Contents 
    If TypeOf entry Is SubFolder Then 
     Dim newNode As TreeNode = folderNode.Nodes.Add(entry.Name, entry.Name, 0, 0) 
     DisplayFolderTree(entry, newNode) 
    ElseIf TypeOf entry Is SubDocument Then 
     folderNode.Nodes.Add(entry.Name, entry.Name, 1, 1) 
    End If 
    Next 
End Sub