2009-09-22 9 views
13

में एक नोड को अक्षम या ग्रे आउट करें मैं एक विशिष्ट नोड को कैसे अक्षम कर सकता हूं ताकि उपयोगकर्ता इसे चुन न सके। उपयोगकर्ता के लिए इसे छिपाना भी मान्य है।TreeNode Editor

मैंने दृश्य संपत्ति की कोशिश की लेकिन वह पूरे पेड़ (सभी नोड्स) को छुपाता है। मैं केवल कुछ नोड अक्षम/छुपा चाहता हूं।

सी # विजुअल स्टूडियो 2005 ट्री नोड संपादक का उपयोग कर #।

उत्तर

23

TreeNode में कोई Enabled संपत्ति नहीं है, इसलिए आपको उस स्थिति को ट्रैक करने के कुछ साधन ढूंढने होंगे। ऐसा करने का एक तरीका है एक नई कक्षा बनाना जो TreeNode प्राप्त करता है और इसमें Enabled संपत्ति होती है। एक और तरीका अक्षम पेड़ नोड्स की सूची बनाए रखना है।

एक बार ऐसा करने के बाद, आप ForeColorTreeNode की संपत्ति का उपयोग कर ग्रेड आउट होने के लिए उपयोग कर सकते हैं (उदाहरण के लिए SystemColors.GrayText मान का उपयोग कर)।

अंत में आप उपयोगकर्ता किसी विशेष नोड का चयन करने के लिए है कि क्या यह ठीक है का मूल्यांकन करने के BeforeSelect घटना का उपयोग कर सकते हैं, और यह का चयन करता है, तो उस नोड अक्षम किया गया है को रोकने के लिए है कि घटना में घटना args की Cancel संपत्ति का उपयोग करें:

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) 
{ 
    e.Cancel = !NodeIsEnabled(e.Node); 
} 
0

दो विकल्प:

  1. जोड़ें और मक्खी पर नोड्स को हटा दें।
  2. मालिक ड्रॉ और क्लिक को संभालता है और इसे किसी अन्य नोड पर भेजता है।
7

मुझे अक्षम ट्रीनोड को संभालने का एक और तरीका मिला। यदि आप ट्रीनोड्स में भूरे रंग का उपयोग नहीं करना चाहते हैं, तो आप रंग मांग सकते हैं और सभी ग्रेड नोड्स को अनुमति नहीं दे सकते हैं।

private void TreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) 
    { 
     if(SystemColors.GrayText==e.Node.ForeColor) 
      e.Cancel = true; 
    } 
-2

सेट विकलांग नोड yourNode.SelectAction = TreeNodeSelectAction.None

से मुझे लगता है कि आप भी विस्तार को निष्क्रिय इस नोड yourNode.PopulateOnDemand = false

+1

TreeNodeSelectAction System.Web.UI.WebControls नाम स्थान में है की जरूरत है। प्रश्न विंडोज फॉर्म के बारे में है। चियर्स – liquide

संबंधित मुद्दे