无锡高端网站建设公司,wordpress封禁插件,wordpress去掉分类目录,网站和公众号的区别是什么意思文章目录 TreeView 基本的知识属性方法事件 TreeView 案例演示案例一#xff1a;案例二#xff1a; TreeView 控件 用于展示分层数据#xff0c;它以树形结构展示信息#xff0c;每个节点可以有一个或多个子节点。TreeView 控件允许用户以可展开和可折叠的形式查看复杂的层… 文章目录 TreeView 基本的知识属性方法事件 TreeView 案例演示案例一案例二 TreeView 控件 用于展示分层数据它以树形结构展示信息每个节点可以有一个或多个子节点。TreeView 控件允许用户以可展开和可折叠的形式查看复杂的层次信息。
TreeView 基本的知识
属性
Nodes: 一个 TreeNodeCollection包含控件的根节点。SelectedNode: 获取或设置当前选中的 TreeNode。CheckBoxes: 确定是否在每个树节点旁边显示复选框。ShowPlusMinus: 确定是否显示用于展开和折叠树节点的加号和减号。ShowLines: 确定是否显示树节点之间的连接线。
方法
BeginUpdate(): 暂停绘制控件可以用于在添加大量节点时避免重绘提高性能。EndUpdate(): 恢复正常绘制控件与 BeginUpdate() 配对使用。CollapseAll(): 折叠所有的树节点。ExpandAll(): 展开所有的树节点。GetNodeAt(): 返回位于指定点的 TreeNode。
事件
AfterCheck / BeforeCheck: 在节点的复选框被用户选中或取消选中之后/之前发生。AfterSelect / BeforeSelect: 在选择某个节点之后/之前发生。AfterCollapse / BeforeCollapse: 在节点被折叠之后/之前发生。AfterExpand / BeforeExpand: 在节点被展开之后/之前发生。NodeMouseClick: 当鼠标单击 TreeNode 时发生。
节点介绍 - TreeNode
Name: 节点的唯一标识符。Text: 节点显示的文本。Nodes: 子节点的集合。
动态加载菜单表
数据库中存储节点与子节点的关系但层次关系不明显。动态加载数据到 TreeView 控件的流程 从数据库获取表数据。使用递归方法创建节点并添加到 TreeView。调用方法在 TreeView 中创建并显示层次结构数据。
TreeView 节点的勾选处理
当父节点勾选或取消勾选时所有子节点状态跟随变化。任一子节点勾选父节点也应勾选。所有子节点都未勾选父节点也不勾选。
TreeView 案例演示
案例一
namespace WinFormsTest
{public partial class frmTreeView : Form{public frmTreeView(){InitializeComponent();}private void frmTreeView_Load(object sender, EventArgs e){TreeView fileTree new TreeView();// 单独设置 Width 和 HeightfileTree.Width 200; // 设置宽度为200像素fileTree.Height 600; // 设置高度为400像素// 或者使用 Size 属性同时设置宽度和高度fileTree.Size new Size(200, 300); // 宽度200像素高度400像素// 开始更新节点防止在添加节点时进行重绘fileTree.BeginUpdate();TreeNode rootNode new TreeNode(我的电脑);fileTree.Nodes.Add(rootNode);// 添加几个文件夹作为子节点TreeNode documentsNode new TreeNode(文档);TreeNode picturesNode new TreeNode(图片);TreeNode musicNode new TreeNode(音乐);TreeNode videoNode new TreeNode(视频);rootNode.Nodes.Add(documentsNode);rootNode.Nodes.Add(picturesNode);rootNode.Nodes.Add(musicNode);rootNode.Nodes.Add(videoNode);// 完成节点添加后恢复控件的绘制fileTree.EndUpdate();fileTree.AfterSelect new TreeViewEventHandler(fileTree_AfterSelect);this.Controls.Add(fileTree);}private void fileTree_AfterSelect(object sender, TreeViewEventArgs e){if (e.Node.Text ! 我的电脑){// 当用户选择一个节点时显示选中节点的信息MessageBox.Show(选中的文件夹: e.Node.Text);}}}
}效果 案例二
using System.Data;
using WinFormsTest.Helper;
namespace WinFormsTest
{public partial class frmTreeView2 : Form{public frmTreeView2(){InitializeComponent();}private void frmTreeView2_Load(object sender, EventArgs e){treeView1.Nodes.Clear();//清除所有节点//1. 获取数据DataTable dtMenus DBHelper.GetDataTable(select Id,MName,ParentId from MenuInfos, 1);//3.调用方法,添加节点CreateNode(dtMenus, null, 0);}//2.添加节点递归private void CreateNode(DataTable dt, TreeNode pNode, int parentId){//1.获取要创建的节点数据DataRow[] rows dt.Select(ParentId parentId);if (rows.Length 0){foreach (DataRow r in rows){//2.新建子节点TreeNode node new TreeNode();node.Name r[Id].ToString();node.Text r[MName].ToString();//3.直接添加到TreeView Nodes 还是添加指定节点的Nodes里 if (pNode ! null)pNode.Nodes.Add(node);elsetreeView1.Nodes.Add(node);//4.判断当前节点下有没有子节点//这个是递归直到rows为0即当前节点没有子节点时结束递归CreateNode(dt, node, int.Parse(node.Name));}}}/添加父子勾选关联功能
//1.父节点勾选或取消它的所有子节点与它一致
//2.只要有一个子节点勾选父节点就勾选
// 子节点全部不勾选父节点就不勾选bool isMouseClick true;private void treeView1_NodeMouseClick_1(object sender, TreeNodeMouseClickEventArgs e){isMouseClick false;//子节点勾选SetChildNodesState(e.Node);//父节点勾选SetParentNodeState(e.Node);isMouseClick true;}private void treeView1_AfterCheck_1(object sender, TreeViewEventArgs e){if (isMouseClick){treeView1.SelectedNode e.Node; //当前操作节点选中}}//递归处理子节点的勾选private void SetChildNodesState(TreeNode node){if (node.Nodes.Count 0){foreach (TreeNode n in node.Nodes){n.Checked node.Checked;SetChildNodesState(n);}}}private void SetParentNodeState(TreeNode node){TreeNode pNode node.Parent;//获取父节点if (pNode ! null){bool bl false;foreach (TreeNode n in pNode.Nodes){if (n.Checked){bl true;break;}}pNode.Checked bl;SetParentNodeState(pNode);}}}
}效果
新建一个SQL数据库 展示 添加父子勾选关联功能后 精彩推荐 【C#进阶一】C#中的数组(Array)、集合(ArrayListQueueStack, HashList)、ListT、字典(DictionaryK,T)和双向链表LinkedList 【C#进阶八】C#中的序列化与反序列化下二进制序列化、XML序列化及JSON序列化
【C#进阶】C#语法中一些常用知识点总结 【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox 【WinForm详细教程三】WinForm中的NumericUpDown、PictureBox、RichTextBox及三种Timer控件 【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件 【WinForm详细教程五】WinForm中的MenuStrip 、ContextMenuStrip 、ToolStrip、StatusStrip控件 【WinForm详细教程六】WinForm中的GroupBox和Panel 、TabControl 、SplitContainer控件 【C#进阶】C#中的委托、事件、回调函数、匿名函数和lambda表达式 如果你对智能建造专业感兴趣或者是相关方向的学生老师或者从业人员欢迎通过微信公众号【智能建造小硕】加入我们 希望有所帮助同时欢迎关注我们后面将更新更多相关内容