Treeview删除节点(如何删除TreeView的一个节点及其子节点)

2024-07-02 21:50:05 :18

treeview删除节点(如何删除TreeView的一个节点及其子节点)

大家好,关于treeview删除节点很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于如何删除TreeView的一个节点及其子节点的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

如何删除TreeView的一个节点及其子节点

如何删除TreeView的一个节点及其子节点TreeNode node = this.treeView1.SelectedNode;if (node != null){node.Remove();}

C#中TreeView组件使用方法

TreeView组件是由多个类来定义的,TreeView组件是由命名空间"System.Windows.Forms"中的"TreeView"类来定义的,而其中的节点(即Node),是由命名空间"System.Windows.Forms"中的"TreeNode"来定义的。所以当在程序中创建一个TreeView对象,其实只是创建了一个可以放置节点的"容器"。而在这个容器中加入一个节点,其实就是加入了从"TreeNode"类中创建的一个节点对象;同样删除一个节点,也就是删除一个"TreeNode"节点对象。一. 本文中介绍的程序设计及运行环境(1).微软视窗2000 服务器版(2)..Net Framework SDK 正式版二. C#操作TreeView组件中的一些常用方法以及具体实现:TreeView组件虽然是一个操作起来比较麻烦的组件,但归根到底,可以总结为三种基本操作:加入子节点、加入兄弟节点和删除节点。掌握了这三种常用操作,对于在编程中灵活运用TreeView组件是十分必要的。下面就分别来加以介绍。(1).加入子节点:所谓子节点,就是处于选定节点的下一级节点。加入子节点的具体过程是:首先要在TreeView组件中定位要加入的子节点的位置,然后创建一个节点对象,然后利用TreeVeiw类中对节点的加入方法(即:Add ( )方法),加入此节点对象。下面就是在treeView1组件中加入一个子节点的具体代码://首先判断是否选定组件中的位置if ( treeView1.SelectedNode == null ){MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;}else{//创建一个节点对象,并初始化TreeNode tmp ;tmp = new TreeNode ( "节点名称" ) ;//在TreeView组件中加入子节点treeView1.SelectedNode.Nodes.Add ( tmp ) ;treeView1.SelectedNode = tmp ;treeView1.ExpandAll ( ) ;}(2).加入兄弟节点:所谓兄弟节点,就是在选定的节点的平级的节点。加入兄弟节点的方法和加入子节点的方法基本一致,只是在最后的实现方法上有着略微的区别。加入兄弟节点的具体步骤,首先也是要确定要加入的兄弟节点所处的位置,接着定义一个节点对象,最后调用TreeView类中对兄弟节点加入的方法,加入此节点对象。加入兄弟节点和加入子节点的最大区别就在于这最后一步。希望读者能够注意。下面是在TreeView组件加入一个兄弟节点的具体代码://首先判断是否选定组件中节点的位置if ( treeView1.SelectedNode == null ){MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;}else{//创建一个节点对象,并初始化TreeNode tmp ;tmp = new TreeNode ( textBox1.Text ) ;//在TreeView组件中加入兄弟节点treeView1.SelectedNode.Parent.Nodes.Add ( tmp ) ;treeView1.ExpandAll ( ) ;}(3).删除节点:删除节点就是删除TreeView组件中选定的节点,删除节点可以是子节点,也可以是兄弟节点,但无论节点的性质如何,必须保证要删除的节点没有下一级节点,否则必须先删除此节点中的所有下一级节点,然后再删除此节点。删除节点比起上面的二个操作要显得略微简单,具体方法是:首先判断要删除的节点是否存在下一级节点,如果不存在,就调用TreeView类中的Remove ( )方法,就可以删除节点了。下面是删除TreeView组件中节点的具体代码://判断选定的节点是否存在下一级节点if ( treeView1.SelectedNode.Nodes.Count == 0 )//删除节点treeView1.SelectedNode.Remove ( ) ;elseMessageBox.Show ( "请先删除此节点中的子节点!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;(4).TreeView组件的一些其他常用操作:其他的一些常用操作比起上面的三种操作,在具体实现上要显得简单许多。这些常用操作无非是,展开所有节点,展开指定的节点、和折叠所有节点。下面就来具体介绍一下:I.展开所有节点:要展开TreeView组件中的所有节点,首先就要把选定的节点指针定位在TreeView组件的根节点上,然后调用选定组件的ExpandAll方法就可以了,下面是具体代码://定位根节点treeView1.SelectedNode = treeView1.Nodes ;//展开组件中的所有节点treeView1.SelectedNode.ExpandAll ( ) ;II.展开选定节点的下一级节点:由于只是展开下一级节点,所以就没有必要用ExpandAll ( )方法了。展开下一级节点只需要调用Expand ( )方法就可以了,下面是具体的实现代码:treeView1.SelectedNode.Expand ( ) ;III.折叠所有节点:折叠所有节点和展开所有节点是一组互操作,具体实现的思路也大致相同,折叠所有节点也是首先要把选定的节点指针定位在根节点上,然后调用选定组件的Collapse ( )就可以了,下面是具体的实现代码://定位根节点treeView1.SelectedNode = treeView1.Nodes ;//折叠组件中所有节点treeView1.SelectedNode.Collapse ( ) ;至此已经把在C#操作TreeView组件的常用方法和一般方法基本都介绍完了。三. C#编写的一个完整操作TreeView组件的例子:下面是C#编写一个的关于TreeView组件的例子,在这个例子中,结合以上介绍的常用方法和一般方法,基本覆盖来TreeView组件的一些最常用的操作。譬如可以灵活的程序中的TreeView组件中,进行加入子节点、兄弟节点、删除节点、折叠、展开等操作。其中前三种基本操作是通过程序中弹出菜单中的功能来实现的,后面操作是通过程序中的按钮来实现的。下面是此程序的代码节略(TreeView.cs):using System ;using System.Drawing ;using System.Collections ;using System.ComponentModel ;using System.Windows.Forms ;using System.Data ;namespace 全面掌握TreeView组件的使用方法{/// Form1 的摘要说明。public class Form1 : Form{private TreeView treeView1 ;private Button button1 ;private Button button2 ;private Button button3 ;private MenuItem menuItem2 ;private MenuItem menuItem3 ;private MenuItem menuItem4 ;private ContextMenu contextMenu1 ;private TextBox textBox1 ;private Label label1 ;/// 必需的设计器变量。private System.ComponentModel.Container components = null ;public Form1 ( ){//初始化窗体中的组件InitializeComponent ( ) ;}/// 清理所有正在使用的资源。protected override void Dispose ( bool disposing ){if ( disposing ){if ( components != null ){components.Dispose ( ) ;}}base.Dispose ( disposing ) ;}private void InitializeComponent ( ){//初始化代码(略)}static void Main ( ){Application.Run ( new Form1 ( ) ) ;}private void AddChildNode ( ){//首先判断是否选定组件中的位置if ( treeView1.SelectedNode == null ){MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;}else{if ( textBox1.Text != "" ){//创建一个节点对象,并初始化TreeNode tmp ;tmp = new TreeNode ( textBox1.Text ) ;//在TreeView组件中加入子节点treeView1.SelectedNode.Nodes.Add ( tmp ) ;treeView1.SelectedNode = tmp ;treeView1.ExpandAll ( ) ;}else{MessageBox.Show ( "TextBox组件必须填入节点名称!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;return ;}}}private void AddParent ( ){//首先判断是否选定组件中节点的位置if ( treeView1.SelectedNode == null ){MessageBox.Show ( "请选择一个节点" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;}else{if ( textBox1.Text != "" ){//创建一个节点对象,并初始化TreeNode tmp ;tmp = new TreeNode ( textBox1.Text ) ;//在TreeView组件中加入兄弟节点treeView1.SelectedNode.Parent.Nodes.Add ( tmp ) ;treeView1.ExpandAll ( ) ;}else{MessageBox.Show ( "TextBox组件必须填入节点名称!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;return ;}}TreeNode tnode = new TreeNode ( textBox1.Text ) ;}private void treeView1_MouseDown ( object sender , MouseEventArgs e ){if ( e.Button == MouseButtons.Right )contextMenu1.Show ( this , new Point ( e.X , e.Y ) ) ;}private void button1_Click ( object sender , System.EventArgs e ){treeView1.SelectedNode.Expand ( ) ;}private void menuItem2_Click ( object sender , System.EventArgs e ){AddChildNode ( ) ;}private void menuItem3_Click ( object sender , System.EventArgs e ){AddParent ( ) ;}private void menuItem4_Click ( object sender , System.EventArgs e ){//判断选定的节点是否存在下一级节点if ( treeView1.SelectedNode.Nodes.Count == 0 )//删除节点treeView1.SelectedNode.Remove ( ) ;elseMessageBox.Show ( "请先删除此节点中的子节点!" , "提示信息" , MessageBoxButtons.OK , MessageBoxIcon.Information ) ;}private void button2_Click ( object sender , System.EventArgs e ){//定位根节点treeView1.SelectedNode = treeView1.Nodes ;//展开组件中的所有节点treeView1.SelectedNode.ExpandAll ( ) ;}private void button3_Click ( object sender , System.EventArgs e ){//定位根节点treeView1.SelectedNode = treeView1.Nodes ;//折叠组件中所有节点treeView1.SelectedNode.Collapse ( ) ;}}}在成功编译TreeView.cs后,运行的程序界面如下:四. 总结:TreeView组件是一个既令程序员头痛,又令程序员难以割舍的组件。这是因为TreeView组件使用非常灵活,显示内容有层次,并且"容量"相对又比较大。但同时在实际的编程比起其他组件又相对麻烦。掌握了本文介绍的这些用C#操作TreeView组件的基本方法后,我想对于在使用TreeView组件中的一般的问题,应该都能够克服了吧。

C#中如何删除treeview中选定的子节点

C#中如何删除treeview中选定的子节点的代码如下:

TreeNode node = this.treeView1.SelectedNode;if (node != null){node.Remove();}

扩展资料:

C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。并定于在微软职业开发者论坛(PDC)上登台亮相。C#是微软公司研究员Anders Hejlsberg的最新成果。

C#看起来与Java有着惊人的相似;它包括了诸如单一继承、接口、与Java几乎同样的语法和编译成中间代码再运行的过程。但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。

C#如图,如何删除treeview里所有空节点

private void label1_MouseUp(object sender, MouseEventArgs e) { for (int i = 0; i 《 this.treeView1.Nodes.Count; i++) { ClearTreeView(this.treeView1.Nodes); } } public void ClearTreeView(TreeNode node) { if (node.ImageIndex == 0 && node.Nodes.Count == 0) { this.treeView1.Nodes.Remove(node); } else { for (int i = 0; i 《 node.Nodes.Count; i++) { ClearTreeView(node.Nodes); } } }递归遍历删除即可....if (node.ImageIndex == 0 && node.Nodes.Count == 0)这里的判断注意判断好是不是你指定的IMAGE类型.即可...拿到对应的树节点下是否有子节点

asp.net中如何删除当前选中的treeview的节点

你是先选中节点前的checkbox 然后在通过别的按钮实现删除吗?如果你这样的话 就在删除按钮的点击事件里些就可以了么protected void ButtonDelete_Click(object sender, EventArgs e) { List《TreeNode》 listTreeNode = new List《TreeNode》(); GetCheckedNodes(TreeView1.Nodes.ChildNodes,listTreeNode); //然后遍历listtreenode里面的节点,数据库删除操作! //删除数据前可先做父级节点删除保护工作,如果需要的话,也就是不删除父节点下的子节点是不可以直接删除父节点的 //这样可以保护你的树结构不会乱 //数据删除完毕后,再重新执行treeview的数据绑定代码 //应该就可以了吧 }protected void GetCheckedNodes(TreeNodeCollection treeNodeCollection, List《TreeNode》 listTreeNodes) { foreach (TreeNode node in treeNodeCollection) { if (node.Checked) { listTreeNodes.Add(node); } GetCheckedNodes(node.ChildNodes, listTreeNodes); } }

C# treeview 删除某个节点

参考代码如下usingSystem.Drawing;//禁用第一个节点treeView1.Nodes.ForeColor=Color.Gray;可以在绑定数据完成后进行,也可以在绑定过程中指定,看个人了和需求了privatevoidtreeView1_BeforeSelect(objectsender,TreeViewCancelEventArgse){if(e.Node!=null){if(e.Node.ForeColor==Color.Gray){e.Cancel=true;//不让选中禁用节点}}}privatevoidtreeView1_BeforeCheck(objectsender,TreeViewCancelEventArgse){if(e.Node!=null){if(e.Node.ForeColor==Color.Gray){e.Cancel=true;//不让选中禁用节点}}}

怎么删除TTreeView下的所有子节点

如何删除TTreeView下的所有子节点?如何删除TTreeView下的所有子节点?------解决方案--------------------试试这个 TreeView1.Items.DeleteChildren; ------解决方案--------------------保留根节点吗?如果保留: var I : integer; begin for I := TreeView1.Items.Count -1 downto 1 do TreeView1.Items.Delete(TreeView1.Items); end; 如果不保留: TreeView1.Items.Clear; ------解决方案--------------------哦,如果保留根节点,一楼是最好的,不过要改一下: TreeView1.Items.DeleteChildren; ------解决方案--------------------呵呵,我那个是示范。当然删除以哪个为根节点的所有子节点都可以 ------解决方案--------------------上面说的都对 ------解决方案--------------------删除一个父节点,其子节点会自动被删除。 一个节点的属性Count表示其直接的子节点数(不包括其“孙”节点),通过Item属性可以访问其子节点。 例如要删除1个节点下所有的子节点: for i:=Node.Count-1 downto 0 do Node.Item.Delete; 如此即可。 或者 Node.DeleteChildren; 掌握TTreeNode的用法就大致会用TTreeview了。 ------解决方案--------------------TreeView1.Items.Clear;

TreeView控件添加、修改、删除节点

using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.Data.SqlClient;public partial class App_page_NaviLeft : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string SchoolID = ""; if (Session.ToString() != "") { SchoolID = Session.ToString(); this.TextBox_SchoolID.Text = SchoolID; } else { ShowMessage("Session已超时,请重新登录!"); return; } //动态绑定DateList DatelistAdd(); //只添加第一层的节点 PopulateCategories(); } } #region 动态绑定DateList private void DatelistAdd() { string strConn = ConfigurationManager.AppSettings.ToString(); // 获取连接数据库的字符串 string strSQL = "Select * From Schoolname_IP where IsDelete=’0’ order by id desc"; System.Data.SqlClient.SqlConnection sqlConn = new SqlConnection(strConn); System.Data.SqlClient.SqlCommand sqlComm = new SqlCommand(strSQL, sqlConn); try { sqlConn.Open(); System.Data.SqlClient.SqlDataReader sqlDR = sqlComm.ExecuteReader(); if (sqlDR != null) { while (sqlDR.Read()) { ListItem LI = new ListItem(); LI.Text = sqlDR.ToString(); LI.Value = sqlDR.ToString(); this.DropDownList_School.Items.Add(LI); } } sqlDR.Close(); this.DropDownList_School.SelectedValue = this.TextBox_SchoolID.Text; } catch { Page.ClientScript.RegisterStartupScript(this.GetType(), "", "《script》window.alert(’获得数据的过程出现了错误!请检查数据库的连接是否正确!’);《/script》"); } finally { sqlConn.Close(); } } #endregion #region 填充第一层树节点 private void PopulateCategories() { TVMenu.Nodes.Clear(); SqlCommand sqlQuery = new SqlCommand("Select * From LM_Navi where NaviGrade=1 and schoolid = ’" + this.TextBox_SchoolID.Text + "’ order by NaviID"); DataSet resultSet = RunQuery(sqlQuery); if (resultSet == null) { return; } if (resultSet.Tables.Count 》 0) { foreach (DataRow row in resultSet.Tables.Rows) { TreeNode NewNode = new TreeNode(row.ToString()); NewNode.PopulateOnDemand = true; this.TVMenu.Nodes.Add(NewNode); if (TextBox1.Text.Trim() == "1") { NewNode.ExpandAll(); } else { NewNode.CollapseAll(); } } } resultSet.Dispose(); } #endregion #region 执行SQL语句并返回数据集 /// 《summary》 /// 函数原型:private DataSet RunQuery(SqlCommand sqlQuery) /// 函数功能:执行SQL语句并返回数据集 /// 函数参数:SqlCommand sqlQuery 带SQL语句的SqlCommand /// 函数返回:执行SQL语句后的数据集 /// 《/summary》 /// 《param name="sqlQuery"》带SQL语句的SqlCommand《/param》 private DataSet RunQuery(SqlCommand sqlQuery) { string connectionString = ConfigurationManager.AppSettings; SqlConnection DBConnection = new SqlConnection(connectionString); SqlDataAdapter dbAdapter = new SqlDataAdapter(); dbAdapter.SelectCommand = sqlQuery; sqlQuery.Connection = DBConnection; DataSet resultsDataSet = new DataSet(); try { dbAdapter.Fill(resultsDataSet); } catch { resultsDataSet = null; } return resultsDataSet; } #endregion #region 展开节点时触发的事件 protected void TVMenu_TreeNodePopulate(object sender, TreeNodeEventArgs e) { //防止重复填充节点 if (e.Node.ChildNodes.Count 》 0) return; string str = e.Node.Value.Split(’,’); string strNaviCode = str.ToString(); string strGrade = ""; bool BoolFlag = e.Node.Checked; strGrade = Convert.ToString((Convert.ToInt32(str) + 1)); SqlCommand sqlQuery = new SqlCommand("Select * From LM_Navi where schoolid = ’" + this.TextBox_SchoolID.Text + "’ and NaviCode like ’" + strNaviCode + "%’ and NaviGrade=" + strGrade + " order by NaviID"); DataSet ResultSet = RunQuery(sqlQuery); if (ResultSet == null) { return; } if (ResultSet.Tables.Count 》 0) { foreach (DataRow row in ResultSet.Tables.Rows) { TreeNode NewNode = new TreeNode(row.ToString()); NewNode.PopulateOnDemand = true; NewNode.Checked = BoolFlag; e.Node.ChildNodes.Add(NewNode); //if ((int)row == 1) //{ // NewNode.Collapse(); //} //else //{ // NewNode.Expand(); //} NewNode.ExpandAll(); } } ResultSet.Dispose(); } #endregion #region 显示信息函数 public void ShowMessage(string Message) { Page.ClientScript.RegisterStartupScript(this.GetType(), "", "《script》window.alert(’" + Message + "’);《/script》"); } #endregion protected void ImageButton_open_all_Click(object sender, ImageClickEventArgs e) { TextBox1.Text = "1"; PopulateCategories(); } protected void ImageButton_close_all_Click(object sender, ImageClickEventArgs e) { TextBox1.Text = "0"; PopulateCategories(); } protected void ImageButton_select_Click(object sender, ImageClickEventArgs e) { try { //if (TVMenu.CheckedNodes != null && TVMenu.CheckedNodes.Count 》 0) //{ string strWhere = ""; for (int i = 0; i 《 TVMenu.CheckedNodes.Count; i++) { if (TVMenu.CheckedNodes.Parent.Checked == false) { string.Value.Split(’,’); string strClassCode = str.ToString(); strWhere += strClassCode + "|"; } } if (strWhere.Length 》 1) { strWhere = strWhere.Substring(0, strWhere.Length - 1); } string strRSQL = strWhere; string strContent = this.TextBox_Content.Text.Trim(); string SchoolID = DropDownList_School.SelectedValue; Page.ClientScript.RegisterStartupScript(this.GetType(), "", "《script》window.open(’FAQslist.aspx?SQL=" + strRSQL + "&Content=" + strContent + "&Page_SchoolID=" + SchoolID + "’,’FAQRight’);《/script》"); //} //else //{ // ShowMessage("请选择节点"); // return; //} } catch { ShowMessage("配置有误,请检查配置。"); return; } } protected void DropDownList_School_SelectedIndexChanged(object sender, EventArgs e) { this.TextBox_SchoolID.Text = this.DropDownList_School.SelectedValue; string schoolid = this.TextBox_SchoolID.Text; Response.Write("《script》window.open(’FAQslist.aspx?Page_SchoolID=" + schoolid + "’,’FAQRight’);《/script》"); PopulateCategories(); } protected void TVMenu_SelectedNodeChanged(object sender, EventArgs e) { try { string str = TVMenu.SelectedNode.Value.Split(’,’); string strClassCode = str.ToString(); string SchoolID = DropDownList_School.SelectedValue; Page.ClientScript.RegisterStartupScript(this.GetType(), "", "《script》window.open(’FAQslist.aspx?A_SQL=" + strClassCode + "&Page_SchoolID=" + SchoolID + "’,’FAQRight’);《/script》"); } catch { ShowMessage("配置有误,请检查配置。"); return; } }}

c# treeview删除节点

for (int i = 0; i 《 TreeView1.Nodes.Count; i++) { if (TreeView1.Nodes.Text.Equals(TextBox1.Text.Trim())) { TreeView1.Nodes.Remove(TreeView1.Nodes); } }这样可以删除根节点至于要删除子节点的东西要取决一个节点的纵深TreeView1.Nodes.Depth; 这样获取程序不完整 一是没有时间,二是想让你自己去发现自己去想,这样你才能提高.如果确实写不出来告诉我,有时间了帮你写完整.

OK,关于treeview删除节点和如何删除TreeView的一个节点及其子节点的内容到此结束了,希望对大家有所帮助。

treeview删除节点(如何删除TreeView的一个节点及其子节点)

本文编辑:admin
Copyright © 2022 All Rights Reserved 威海上格软件有限公司 版权所有

鲁ICP备20007704号

Thanks for visiting my site.