目录
常用属性
CheckBoxes属性
LabelEdit属性
Nodes属性。
ShowLines属性
常用方法
CollapseAll()方法
ExpandAll()方法
GetNodeCount()方法
常用事件
AfterCheck事件。
AfterCollapse事件
AfterExpand事件
AfterLabelEdit事件
AfterSelect事件。
BeforeCheck事件。
BeforeCollapse事件。
BeforeExpand事件
BeforeLabelEdit事件
BeforeSelect事件
Click事件
实用案例
垂直滚动条出来的时候让它显示在最上面
设置Node的样式
获取鼠标选中的节点。
编辑TreeView节点
父节点选中时,子节点全部选中,同级子节点选中时,父节点选中
常用属性
CheckBoxes属性
该属性表示获取或设置一个值,用以指示是否在试图空间中的树节点旁显示复选框。
例:this.treeView1.CheckBoxes=True;
LabelEdit属性
该属性表示获取或设置一个值,用以指示是否可以编辑树节点的标签文本。如果让treeView1控件不能编辑树节点将LabelEdit设置为false。
Nodes属性。
该属性用于设置TreeView控件中所有节点
this.treeView1.Nodes.Add(“拉芳”);
ShowLines属性
当在同级节点之间或者树系欸但之间有线存在,该值为True,否则为false。默认值为True。
ShowPlusminus属性。该属性表示是否在父节点旁边显示加减号。
例:设置在treeView1控件中的父级节点旁边显示加减号:this.treeView1.ShowPlusminus=true;
常用方法
CollapseAll()方法
此方法折叠所有树节点。当树系欸但折叠时,只显示父节点。
ExpandAll()方法
此方法展开所有树节点,包括子节点。
GetNodeCount()方法
此方法用于获取TreeView控件中的节点总数。
常用事件
AfterCheck事件。
该事件在选中显示在树节点旁边的复选框时发生。
语法:public event TreeViewEventHandler AfterCheck
AfterCollapse事件
该事件在树节点展开时发生。语法:
public event TreeViewEventHadler AfterCollapse
AfterExpand事件
该事件在树节点展开时发生。
语法:public event TreeViewEventHandler AfterExpand
AfterLabelEdit事件
该事件在标记树节点标签文本后发生。
语法:public event TreeViewEventHandler AfterLabelEdit
AfterSelect事件。
该事件在选中树节点后发生。
语法:public event TreeViewEventHandler AfterSelect
BeforeCheck事件。
该事件在中选复选框前发生。
public event TreeViewEventHandler BeforeCheck
BeforeCollapse事件。
该事件在树节点折叠前发生。
语法:public event TreeViewEventHandler BeforeCollapse
BeforeExpand事件
该节点在树节点展开前发生。
语法:public event TreeViewEventHandler BeforeExpand
BeforeLabelEdit事件
该事件在编辑树节点标签前发生。
语法:public event TreeViewEventHandler BeforeLabelEdit
BeforeSelect事件
该事件在选定树节点前发生。
语法:public event TreeViewEventHandler BeforeSelect
Click事件
该事件在单击控件时发生。
语法:public event EventHandler Click。
实用案例
垂直滚动条出来的时候让它显示在最上面
实现:treeView1.TopMode=treeView1.Node[0];
让第一个可见的节点时树里面的第一个节点,滚动条就会在上面了。
设置Node的样式
Node.ForeColor=System.Drawing.Color.Red;
Node.NodeFont=new System.Drawing.Font(“宋体”,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
{
//更改后的值=name;
}
}
注:节点的编辑实在Label上做的更改,在编辑状态后,不做操作时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);
}
}