WinForm — Резюме TreeView

искусственный интеллект

содержание

 

Общие свойства

Свойство CheckBoxes

Свойство LabelEdit

Свойство узлов.

Свойство ShowLines

Общий метод

Метод Свернуть все()

Метод ExpandAll()

Метод GetNodeCount()

Общие события

Событие после проверки.

Событие AfterCollapse

Событие AfterExpand

Событие AfterLabelEdit

Событие AfterSelect.

Событие перед проверкой.

Событие перед коллапсом.

Событие BeforeExpand

Beforelabeledit событие

Событие BeForeSelect

Нажмите событие

Практический случай

Когда появится вертикальная полоса прокрутки, сделайте так, чтобы она отображалась сверху

Установить стиль узла

Получите узел, выбранный мышью.

Редактирование узлов TreeView

Когда выбран родительский узел, выбираются все дочерние узлы; когда выбран дочерний узел того же уровня, выбирается родительский узел


Общие свойства

  • Свойство CheckBoxes

Получает или задает значение, указывающее, следует ли отображать флажок рядом с узлами дерева в пространстве просмотра.

Пример: this.treeView1.CheckBoxes=True;

  • Свойство LabelEdit

Это свойство означает получение или установку значения, указывающего, можно ли редактировать текст метки узла дерева. Задайте для LabelEdit значение false, если элемент управления treeView1 не может редактировать узлы дерева.

  • Свойство узлов.

Это свойство используется для установки всех узлов в элементе управления TreeView.

this.treeView1.Nodes.Add ("Лафанг");

  • Свойство ShowLines

Истина, если существует линия между родственными узлами или между узлами дерева, в противном случае — ложь. Значение по умолчанию верно.

Свойство ShowPlusminus. Это свойство указывает, отображать ли знаки плюс и минус рядом с родительскими узлами.

Пример. Установите знаки плюс и минус рядом с родительским узлом в элементе управления treeView1: this.treeView1.ShowPlusminus=true;

Общий метод

  • Метод Свернуть все()

Этот метод сворачивает все узлы дерева. Когда дерево закрыто, но свернуто, отображается только родительский узел.

  • Метод ExpandAll()

Этот метод расширяет все узлы дерева, включая дочерние узлы.

  • Метод GetNodeCount()

Этот метод используется для получения общего количества узлов в элементе управления TreeView.

Общие события

  • Событие после проверки.

Это событие происходит, когда установлен флажок, отображаемый рядом с узлом дерева.

Синтаксис: публичное событие TreeViewEventHandler AfterCheck

  • Событие AfterCollapse

Это событие происходит, когда узел дерева расширяется. грамматика:

public event TreeViewEventHadler AfterCollapse

  • Событие AfterExpand

Это событие происходит, когда узел дерева расширяется.

Синтаксис: открытое событие TreeViewEventHandler AfterExpand

  • Событие AfterLabelEdit

Это событие происходит после выделения текста метки узла дерева.

Синтаксис: открытое событие TreeViewEventHandler AfterLabelEdit

  • Событие AfterSelect.

Это событие происходит при выборе узла дерева.

Синтаксис: открытое событие TreeViewEventHandler AfterSelect

  • Событие перед проверкой.

Это событие происходит до установки флажка.

public event TreeViewEventHandler BeforeCheck

  • Событие перед коллапсом.

Это событие происходит перед свертыванием узла дерева.

Синтаксис: публичное событие TreeViewEventHandler BeforeCollapse

  • Событие BeforeExpand

Этот узел появляется перед расширением узла дерева.

Синтаксис: публичное событие TreeViewEventHandler BeforeExpand

  • Событие BeforeLabelEdit

Это событие происходит перед редактированием метки узла дерева.

Синтаксис: открытое событие TreeViewEventHandler BeforeLabelEdit

  • Событие ПередВыбором

Это событие происходит перед выбранным узлом дерева.

Синтаксис: публичное событие TreeViewEventHandler BeforeSelect

  • Нажмите событие

Это событие происходит при щелчке элемента управления.

Синтаксис: общедоступное событие EventHandler Click.

Практический случай

  • Когда появится вертикальная полоса прокрутки, сделайте так, чтобы она отображалась сверху

Реализация: treeView1.TopMode=treeView1.Node[0];

Сделайте первый видимый узел первым узлом в дереве, и на нем будет полоса прокрутки.

  • Установить стиль узла

Node.ForeColor=System.Drawing.Color.Red;

Node.NodeFont=new System.Drawing.Font("Arial",9F,System.Drawing.FontStyle.Strikeout,System.Drawing.GraphicsUnit.Point,((byte)(134)));

  • Получите узел, выбранный мышью.

TreeView, когда вы щелкаете правой кнопкой мыши или дважды щелкаете по узлу, SelectedNode не указывает на узел, по которому щелкнули правой кнопкой мыши; его нужно использовать в NodeMouseClick и NodeMouseDoubleClick;

private void treeview1_NodeMouseClick(object sender,TreeNodeMouseClickEventArgs e)

{

         TreeNode txSelect=this.treeView1.GetNodeAt(new Point(e.X,e.Y));

This.treeView1.SelectedNode=txSelect;//Его также можно записать как e.Node;

}

  • Редактирование узлов TreeView

 

Установите для LabelEidt значение true, установите щелчок правой кнопкой мыши или верхний узел на узле в дереве и добавьте параметр переименования для щелчка правой кнопкой мыши.

private void ResetToolStripMenuItem_Click(object sender,EventArgs e)

{

         this.menuTree.SelectNode.BeginEdit();

}

private void menuTree_AfterLabelEdit(object sender,NodeLabelEditEventArgs e)

{

         string name=e.Label;

         if (name==null)

         {

//Измененное значение=e.Node.Text;

}

else

{

//измененное значение=имя;

}

}

Примечание: Редактирование узла на самом деле является изменением, внесенным в метку.После состояния редактирования e.Label пуст, когда не выполняются никакие операции, поэтому исходное значение должно быть переназначено, если оно не изменено.

  • Когда выбран родительский узел, выбираются все дочерние узлы; когда выбран дочерний узел того же уровня, выбирается родительский узел

  private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)

        {

            if (e.Action == TreeViewAction.ByMouse)

            {

                if (e.Node.Nodes != null)

                {

                    CheckAllChildNode(e.Node);

                }

                CheckParentNode(e.Node);

            }

        }

        private void CheckAllChildNode(TreeNode node)

        {

            foreach (TreeNode childNode in node.Nodes)

            {

                childNode.Checked = node.Checked;

                if (childNode.Nodes != null)

                {

                    CheckAllChildNode(childNode);

                }

            }

        }

        private void CheckParentNode(TreeNode node)

        {

            TreeNode parentNode = node.Parent;

            if (parentNode == null)

            {

                return;

            }

            bool isAllChecked = true;

            foreach (TreeNode nodeOhter in parentNode.Nodes)

            {

                if (nodeOhter.Checked == false)

                {

                    isAllChecked = false;

                    break;

                }

            }

            parentNode.Checked = isAllChecked;

            if (parentNode.Parent != null)

            {

                CheckParentNode(parentNode);

            }

        }