locked
Как скрыть флажки CheckBox для дочерних узлов, если флажки установлены в True(отмечены) RRS feed

  • Общие обсуждения

  • Чтобы сделать это возможным мы должны вручную перерисовывать узлы дерева. Мы можем установить свойство TreeView.DrawMode в значение OwnerDrawAll и назначить обработчик события DrawNode. Попробуйте обработчик подобный приведенному ниже.

    Code Block
            private void treeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
            {
                if (IsThirdLevel(e.Node))
                {
                    Color backColor, foreColor;
     
                    if ((e.State & TreeNodeStates.Selected) == TreeNodeStates.Selected)
                    {
                        backColor = SystemColors.Highlight;
                        foreColor = SystemColors.HighlightText;
                    }
                    else if ((e.State & TreeNodeStates.Hot) == TreeNodeStates.Hot)
                    {
                        backColor = SystemColors.HotTrack;
                        foreColor = SystemColors.HighlightText;
                    }
                    else
                    {
                        backColor = e.Node.BackColor;
                        foreColor = e.Node.ForeColor;
                    }
     
                    using (SolidBrush brush = new SolidBrush(backColor))
                    {
                        e.Graphics.FillRectangle(brush, e.Node.Bounds);
                    }
     
                    TextRenderer.DrawText(e.Graphics, e.Node.Text, 
                        this.treeView.Font, e.Node.Bounds, foreColor, backColor);
     
                    if ((e.State & TreeNodeStates.Focused) == TreeNodeStates.Focused)
                    {
                        ControlPaint.DrawFocusRectangle(e.Graphics, e.Node.Bounds,
                        foreColor, backColor);
                    }
     
                    e.DrawDefault = false;
                }
                else
                {
                    e.DrawDefault = true;
                }
            }
     
            private static bool IsThirdLevel(TreeNode node)
            {
                return node.Parent != null && node.Parent.Parent != null;
    }
    


    Для связи [Mail]
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 22:54 MSDN Forums consolidation (От:Разработка Windows-приложений)
    24 марта 2010 г. 15:44
    Модератор