содержание
Когда появится вертикальная полоса прокрутки, сделайте так, чтобы она отображалась сверху
Получите узел, выбранный мышью.
Общие свойства
-
Свойство 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);
}
}