WinForm——TreeView总结
目录
常用属性
该属性表示获取或设置一个值,用以指示是否在试图空间中的树节点旁显示复选框。
例:this.treeView1.CheckBoxes=True;
该属性表示获取或设置一个值,用以指示是否可以编辑树节点的标签文本。如果让treeView1控件不能编辑树节点将LabelEdit设置为false。
该属性用于设置TreeView控件中所有节点
this.treeView1.Nodes.Add(“拉芳”);
当在同级节点之间或者树系欸但之间有线存在,该值为True,否则为false。默认值为True。
ShowPlusminus属性。该属性表示是否在父节点旁边显示加减号。
例:设置在treeView1控件中的父级节点旁边显示加减号:this.treeView1.ShowPlusminus=true;
常用方法
此方法折叠所有树节点。当树系欸但折叠时,只显示父节点。
此方法展开所有树节点,包括子节点。
此方法用于获取TreeView控件中的节点总数。
常用事件
该事件在选中显示在树节点旁边的复选框时发生。
语法:public event TreeViewEventHandler AfterCheck
该事件在树节点展开时发生。语法:
public event TreeViewEventHadler AfterCollapse
该事件在树节点展开时发生。
语法:public event TreeViewEventHandler AfterExpand
该事件在标记树节点标签文本后发生。
语法:public event TreeViewEventHandler AfterLabelEdit
该事件在选中树节点后发生。
语法:public event TreeViewEventHandler AfterSelect
该事件在中选复选框前发生。
public event TreeViewEventHandler BeforeCheck
该事件在树节点折叠前发生。
语法:public event TreeViewEventHandler BeforeCollapse
该节点在树节点展开前发生。
语法:public event TreeViewEventHandler BeforeExpand
该事件在编辑树节点标签前发生。
语法:public event TreeViewEventHandler BeforeLabelEdit
该事件在选定树节点前发生。
语法:public event TreeViewEventHandler BeforeSelect
该事件在单击控件时发生。
语法:public event EventHandler Click。
实用案例
实现:treeView1.TopMode=treeView1.Node[0];
让第一个可见的节点时树里面的第一个节点,滚动条就会在上面了。
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;
}
将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);
}
}
文章来源: wanghao.blog.csdn.net,作者:AI浩,版权归原作者所有,如需转载,请联系作者。
原文链接:wanghao.blog.csdn.net/article/details/106220689
- 点赞
- 收藏
- 关注作者
评论(0)