2009-03-13 10 views
8

जब मैं वृक्षदृश्य में नोड का चयन करता हूं तो यह हाइलाइट करता है और मैं नीचे उस नोड के आधार पर डेटा दिखाता हूं। जब मैं एक और नियंत्रण चुनता हूं (वृक्षदृश्य फोकस खो देता है) यह अब हाइलाइट नहीं किया जाता है। फोकस खोने के बाद मैं इसे हाइलाइट कैसे करूं? एक खोज करते समय मैं नहीं बता सकता कि कौन सा नोड चुना गया है क्योंकि मुझे टेक्स्टबॉक्स पर ध्यान रखना चाहिए (इसलिए उपयोगकर्ता अधिक टेक्स्ट टाइप कर सकते हैं)।सी # में ट्री व्यू नियंत्रण, चयन() और फोकस

उत्तर

10

आप गलत पर HideSelection गुण सेट करने के लिए है - तो आप TreeView नियंत्रण खो फोकस हालांकि संग्रह दिखाई देगा,

+0

मैं 3 दिन पहले ठीक उसी समस्या के साथ संघर्ष किया ... – bernhardrusch

+2

मैं वहाँ वास्तव में हैं कि सी # में 3 TreeView वर्गों को जोड़ना होगा .NET और WPF। केवल WinForms नियंत्रण में HideSelection गुण है। – wigy

+0

यह मुझे आश्चर्यचकित करता है कि विजुअल स्टूडियो डिजाइनर 'छुपाएं' संपत्ति के डिफ़ॉल्ट मान के रूप में 'सत्य' क्यों निर्दिष्ट करता है। मुझे लगता है कि उपयोग के अधिकांश मामलों में *** *** *** वर्तमान में चयनित नोड को छिपाना पसंद नहीं किया जाएगा। – DavidRR

3

मैं सिर्फ इस मुद्दे में चलाने और यह है मैं इसे कैसे संबोधित किया: DrawMode संपत्ति बदली गई TreeViewDrawMode.OwnerDrawText करने और DrawNode घटना


    private void MyTreeGridview_DrawNode(object sender, DrawTreeNodeEventArgs e) 
    { 
     if ((e.State == TreeNodeStates.Selected) && (!MyTreeGridview.Focused)) 
     { 
      Font font = e.Node.NodeFont ?? e.Node.TreeView.Font; 
      Color fore = e.Node.ForeColor; 
      if (fore == Color.Empty)fore = e.Node.TreeView.ForeColor;  
      fore = SystemColors.HighlightText; 
      Color highlightColor = SystemColors.Highlight; 
      e.Graphics.FillRectangle(new SolidBrush(highlightColor), e.Bounds); 
      ControlPaint.DrawFocusRectangle(e.Graphics, e.Bounds, fore, highlightColor); 
      TextRenderer.DrawText(e.Graphics, e.Node.Text, font, e.Bounds, fore, highlightColor, TextFormatFlags.GlyphOverhangPadding); 
     } 
     else 
     { 
      e.DrawDefault = true; 
     } 
    } 
0

करने के लिए पंजीकृत जब HideSelection झूठी और TreeView खो ध्यान केंद्रित करने के लिए निर्धारित है हाइलाइट रंग अपनी पसंद करने के लिए पर्याप्त उज्ज्वल नहीं है, तो:

सुनिश्चित करें कि आपके टी reeView का छुपा चयन सही (डिफ़ॉल्ट मान) पर सेट है।

फिर संभाल TreeView का दर्ज करें और इस तरह की घटनाओं को छोड़ दें: WinForms, एएसपी:

void myTreeView_Leave(object sender, EventArgs e) 
{ 
    if((sender as TreeView).SelectedNode != null) 
     (sender as System.Windows.Forms.TreeView).SelectedNode.BackColor = Color.Red; //your highlight color 
} 

void myTreeView_Enter(object sender, EventArgs e) 
{ 
    if((sender as TreeView).SelectedNode != null) 
     (sender as TreeView).SelectedNode.BackColor = (sender as TreeView).BackColor; 
} 
संबंधित मुद्दे