C# TreeView控件使用代码
- 作者: 十个丶钟
- 来源: 51数据库
- 2021-10-19
当前选中项:treeview.selectednode
增加顶级节点:treeview.nodes.add("key", "text")
增加同级节点:treeview.selectednode.parent.nodes.add("key", "text")
增加子节点:treeview.selectednode.nodes.add("key", "text")
全部展开:treeview.expandall()
全部收拢:treeview.collapseall()
重新设置treeview
数据库表结构为: id 类型名称 父级id
private void loadtreeview()
{
this.货品类别tableadapter1.fill(supercargodataset1.货品类别);
datatable table = supercargodataset1.货品类别;
datarow[] row = table.select("父级id=0");
foreach (datarow r in row)
{
treenode node = 货品类别treeview.nodes.add(r["id"].tostring(), r["类型名称"].tostring());
recursionshow(node, r["id"].tostring());
}
}
private void recursionshow(treenode nodes, string id)
{
datatable table = supercargodataset1.货品类别;
datarow[] row = table.select("父级id=" + id);
if (row != null)
{
foreach (datarow r in row)
{
treenode node = nodes.nodes.add(r["id"].tostring(), r["类型名称"].tostring());
recursionshow(node, r["id"].tostring());
}
}
}
删除选中节点和其子结点,同时删除数据库中相应记录
数据库表结构为: id 类型名称 父级id
private void 删除toolstripbutton_click(object sender, eventargs e)
{
if (货品类别treeview.selectednode != null)
{
datarow[] rowchildren = supercargodataset1.货品类别.select("id=" + 货品类别treeview.selectednode.name.tostring());
if (rowchildren != null)
{
foreach (datarow row in rowchildren)
{
delete节点(row["id"].tostring());
row.delete();
}
}
货品类别treeview.selectednode.remove();
}
}
private void delete节点(string id)
{
datarow[] rowchildren = supercargodataset1.货品类别.select("父级id=" + id);
if (rowchildren != null)
{
foreach (datarow row in rowchildren)
{
delete节点(row["id"].tostring());
row.delete();
}
}
}
treeview右键选中
private void treeview左侧_mousedown( object sender , mouseeventargs e )
{
if( e.button == mousebuttons.right )
{
treenode node = treeview左侧.getnodeat (e.x , e.y);
if( node != null )//右键未选中节点,不改变当前选中的节点。vs2005如此。
{
this.treeview左侧.selectednode = node;
}
}
}
增加顶级节点:treeview.nodes.add("key", "text")
增加同级节点:treeview.selectednode.parent.nodes.add("key", "text")
增加子节点:treeview.selectednode.nodes.add("key", "text")
全部展开:treeview.expandall()
全部收拢:treeview.collapseall()
重新设置treeview
数据库表结构为: id 类型名称 父级id
复制代码 代码如下:
private void loadtreeview()
{
this.货品类别tableadapter1.fill(supercargodataset1.货品类别);
datatable table = supercargodataset1.货品类别;
datarow[] row = table.select("父级id=0");
foreach (datarow r in row)
{
treenode node = 货品类别treeview.nodes.add(r["id"].tostring(), r["类型名称"].tostring());
recursionshow(node, r["id"].tostring());
}
}
private void recursionshow(treenode nodes, string id)
{
datatable table = supercargodataset1.货品类别;
datarow[] row = table.select("父级id=" + id);
if (row != null)
{
foreach (datarow r in row)
{
treenode node = nodes.nodes.add(r["id"].tostring(), r["类型名称"].tostring());
recursionshow(node, r["id"].tostring());
}
}
}
删除选中节点和其子结点,同时删除数据库中相应记录
数据库表结构为: id 类型名称 父级id
复制代码 代码如下:
private void 删除toolstripbutton_click(object sender, eventargs e)
{
if (货品类别treeview.selectednode != null)
{
datarow[] rowchildren = supercargodataset1.货品类别.select("id=" + 货品类别treeview.selectednode.name.tostring());
if (rowchildren != null)
{
foreach (datarow row in rowchildren)
{
delete节点(row["id"].tostring());
row.delete();
}
}
货品类别treeview.selectednode.remove();
}
}
private void delete节点(string id)
{
datarow[] rowchildren = supercargodataset1.货品类别.select("父级id=" + id);
if (rowchildren != null)
{
foreach (datarow row in rowchildren)
{
delete节点(row["id"].tostring());
row.delete();
}
}
}
treeview右键选中
复制代码 代码如下:
private void treeview左侧_mousedown( object sender , mouseeventargs e )
{
if( e.button == mousebuttons.right )
{
treenode node = treeview左侧.getnodeat (e.x , e.y);
if( node != null )//右键未选中节点,不改变当前选中的节点。vs2005如此。
{
this.treeview左侧.selectednode = node;
}
}
}
推荐阅读
- C#通过fleck实现wss协议的WebSocket多人Web实时聊天(附源码)
- 团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
- 使用 MSBuild.exe 在发布模式下构建 C# 解决方案
- 当我发布 Web 应用程序时,AfterPublish 脚本不运行
- 构建时 T4 转换的产品仅在下一个构建中使用
- ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
- 新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
- 如何将条件编译符号(DefineConstants)传递给 msbuild
- MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
- NuGet 包还原找不到包,没有源
热点文章
团队城市未满足要求:MSBuildTools12.0_x86_Path 存在
0
使用 MSBuild.exe 在发布模式下构建 C# 解决方案
0
当我发布 Web 应用程序时,AfterPublish 脚本不运行
0
构建时 T4 转换的产品仅在下一个构建中使用
0
ASP.NET Core Application (.NET Framework) for Windows x64 only error in project.assets.json
0
新的 .csproj 格式 - 如何将整个目录指定为“链接文件"到子目录?
0
如何将条件编译符号(DefineConstants)传递给 msbuild
0
MSBuild 支持 Visual Studio 2017 RTM 中的 T4 模板
0
NuGet 包还原找不到包,没有源
0
使用 C# 6.0 功能运行 TFS 构建
0