2009-11-01 14 views
6

जब मैंने ट्रीव्यूव में इमेजलिस्ट का उपयोग करने का प्रयास किया, तो छवि सूचकांक बदलता है जब ट्रीनोड क्लिक किया जाता है। मुझे नहीं पता कि यह क्यों हो रहा है। क्या कोई मेरी मदद कर सकता है?चयन पर ट्री व्यू नोड की छवि अनुक्रमणिका

अग्रिम

उत्तर

11

धन्यवाद आप दोनों ImageIndex और पेड़ नोड पर SelectedImageIndex सेट करना होगा।

9

'चयनित इमेज इंडेक्स का इरादा किसी विशेष नोड के लिए' ImageIndex 'द्वारा सेट किए गए चयन से भिन्न छवि को प्रदर्शित करने की अनुमति देना है। इन दोनों को लगातार बनाए रखने के लिए उन्हें एक ही मूल्य पर सेट करना आवश्यक है। यह आपकी आवश्यकताओं के आधार पर डिजाइन समय या प्रोग्रामेटिक रूप से किया जा सकता है।

int myCurrentImageIndex = 0; 
TreeNode node = myTreeView.Nodes.Add("new node!"); 
node.ImageIndex = node.SelectedImageIndex = myCurrentImageIndex; 

हालांकि, अगर आप किसी भी कारण से ImageIndex मान बदलने के कार्य करें:

उदाहरण के लिए, यदि छवियों तो कभी नहीं यह उन्हें स्थापित करने के साथ-साथ जब एक नया नोड TreeView में जोड़ा जाता है के रूप में सरल है प्रारंभिक सृजन के बाद (जैसे किसी प्रकार की उपयोगकर्ता कार्रवाई के लिए प्रतिक्रिया), तो आपको चयनित इमेज इंडेक्स भी बदलना होगा। अन्यथा, वे असंगत हो जाएंगे।

int myNewImageIndex = 1; 
node.ImageIndex = node.SelectedImageIndex = myNewImageIndex; 

(ध्यान दें यह उन्हें स्थापित करने के लिए 'AfterSelect' घटना के ईवेंट हैंडलर में एक ही होना करने के लिए पर्याप्त नहीं है। यह अपने कोड में कहीं भी किया जाना चाहिए जहां ImageIndex बदल जाता है।)

+0

आप एक आवेदन है कि एक फ़ोल्डर की तरह इसकी संरचना प्रस्तुत कर रहे हैं, अपने उपयोगकर्ताओं को जब वे एक का चयन किया है छवि में परिवर्तन होने की सराहना करेंगे "फ़ोल्डर।" बस सुनिश्चित करें कि परिवर्तन बहुत गंदा या सूक्ष्म नहीं है। –

+0

ठीक है, मेरे पास एक ही स्थिति है। लेकिन मैं इस व्यवहार को पूरी तरह से कैसे रोकूं? मेरे सभी नोड्स रनटाइम के दौरान बनाए जाते हैं। AfterSelect घटना को ट्रैक करने से मुझे इसे रोकने का एक तरीका मिलेगा? –

+1

मेरे पास भी सटीक स्थिति थी। मैंने जो किया वह एक संबंधित इंडेक्स वाली छवियों को घर बनाने के लिए एक स्थिर शब्दकोश बना रहा था क्योंकि मैं गतिशील रूप से जोड़े गए थे क्योंकि मैं रन टाइम पर इमेजलिस्ट की अनुक्रमणिका निर्धारित करने में सक्षम नहीं था। इसलिए मैंने कुछ ऐसा उपयोग किया: सार्वजनिक स्थैतिक रीडोनली शब्दकोश TREEVIEW_ICONS = नया शब्दकोश (); और इसे जोड़ने पर बनाए रखा। शब्दकोश में स्ट्रिंग छवि का अद्वितीय फ़ाइल नाम था और int सूचकांक को ट्रैक करने का मेरा तरीका था। अर्थात। TREEVIEW_ICONS.Add (iconFileName, TREEVIEW_ICONS.Count) –

1

आप कर सकते हैं सीधे निर्माता में यह कार्य करें:

TreeNode node = new TreeNode("My treenode", 1, 1); 
संबंधित मुद्दे