2008-10-08 12 views
12

मेरे पास इस तरह के नोड्स के साथ एक वृक्षदृश्य है: "फू (1234)", और उपयोगकर्ता को नोड्स का नाम बदलने की अनुमति देना चाहता है, लेकिन केवल (1234) बिना फू भाग। मैं पहली बार इस तरह BeforeLabelEdit में नोड पाठ बदलने की कोशिश की:ट्री व्यू लेबल संपादन प्रश्न

private void treeView1_BeforeLabelEdit(object sender, NodeLabelEditEventArgs e) 
{ 
    e.Node.Text = "Foo"; 
} 

लेकिन जब मैं नोड क्लिक कर संपादित करें, "फू (1234)" पाठ बॉक्स में दिखाई देता है।

ठीक है, तो चलो कुछ और कोशिश करें।

मैं गलत पर treeView1.LabelEdit निर्धारित करते हैं, और फिर हों:

private void treeView1_MouseClick(object sender, MouseEventArgs e) 
{ 
    if (e.Button == MouseButtons.Left) 
    { 
     if (treeView1.SelectedNode == treeView1.GetNodeAt(e.Location)) 
     { 
      treeView1.SelectedNode.Text = "Foo"; 
      treeView1.LabelEdit = true; 
      treeView1.SelectedNode.BeginEdit(); 
     } 
    } 
} 

और फिर AfterLabelEdit में, मैं गलत पर वापस LabelEdit निर्धारित किया है।

और अनुमान लगाओ क्या? यह या तो काम नहीं करता है। यह नोड टेक्स्ट को "फू" में बदलता है लेकिन संपादन टेक्स्टबॉक्स प्रकट नहीं होता है।

कोई विचार? धन्यवाद

उत्तर

5

अंततः मुझे CodeProject पर solution मिला है। नीचे की टिप्पणियों में से, आपको एक पोर्टेबल समाधान भी मिलेगा।

4

हे - मैंने कुछ साल पहले उस पर हमला किया था। मैंने पहले से लेबल लेबल में लेबल को बदलने की अनुमति देने के लिए suggestion on Connect (इसके लिए वोट दें!) छोड़ा था।

एक विकल्प (WinForms में - यह WPF में एक अलग कहानी है) अपने ट्री नोड्स के लिए कस्टम पेंटिंग का उपयोग करना है ताकि वास्तविक लेबल अभी भी "फू" हो और आप इसके बाद कस्टम ("1234)" खींचे। हालांकि यह सही होने के लिए दर्द का थोड़ा सा है।

+0

आपके उत्तर के लिए धन्यवाद, मैं इसे कस्टम पेंटिंग के साथ करने की कोशिश करूंगा। और निश्चित रूप से मैंने आपके सुझाव के लिए मतदान किया :) – neo2862

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