TreeView(竖节点控件)《笔记4》

来源:互联网 发布:国家药品食品数据查询 编辑:程序博客网 时间:2024/05/18 02:04

TreeView随时更新
1、代码添加节点的方法:
TreeNode tn = new TreeNode(“子节点名称”);
TreeNode tn1 = new TreeNode(“父节点名称”,new TreeNode[ ] { tn } );
TreeView.Nodes.Add(tn1);

2、属性:
复选框设置:
TreeView.CheckBoxes = true;
TreeView.SelectedNode.Level 获取节点的深度!可以用来判断节点属于第几节的节点

3、TreeView在CSharp中定义的只有两种模式:
一种是已选中非选中两种。
TreeView.Checked = true/false;

如果要出现选中父节点,同时选中子节点需要重写TreeVies控件和CheckBox控件。

4、如何在TreeView中加入节点图标:
用存储控件(ImageList)存放需要的图像,在把ImageList赋值给TreeView.ImageList属性中。

Image im = image.FromFile("图像地址");imageList1.Images.AddRange(new Image[]{im}); treeView1.ImageList = this.imageList1;TreeNode tn0 = new TreeNode("子节点");//获取当树节点处于**未选定**状态时所显示的图像列表索引值。tn0.ImageIndex = 0;//获取当树节点处于**选定**状态时所显示的图像列表索引值。tn0.SelectedImageIndex = 0;TreeNode tn1 = new TreeNode("父节点",new TreeNode[]{tn0});tn1.ImageIndex = 0;tn1.SelectedImageIndex = 0;treeView1.Nodes.Add(th1);.......
        //选中节点时候触发方法        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)        {            SetChildChecked(e.Node);                  }        //根据父节点输入子节点的状态        private void SetChildChecked(TreeNode childNode)        {            if (childNode.Checked)            {            //节点选中执行                for (int i = 0; i < childNode.GetNodeCount(false); i++)                {                    TreeNode th = childNode.Nodes[i];                    if (th.Checked != true)                    {                        th.Checked = true;                    }                }            }            else            {            //节点未选中执行                for (int i = 0; i < childNode.GetNodeCount(false); i++)                {                    TreeNode tn = childNode.Nodes[i];                    tn.Checked = false;                }            }        }
        ///以下这段代码为**第三种选择模式**用于补充        /// <summary>         /// 根据子节点状态设置父节点的状态         /// </summary>         /// <param name="childNode"></param>         private void SetParentChecked(TreeNode childNode)        {            TreeNode parentNode = childNode.Parent;            if (!parentNode.Checked && childNode.Checked)            {                int ichecks = 0;                for (int i = 0; i < parentNode.GetNodeCount(false); i++)                {                    TreeNode node = parentNode.Nodes[i];                    if (node.Checked) { ichecks++; }                }                if (ichecks == parentNode.GetNodeCount(false))                {                    parentNode.Checked = true;                    if (parentNode.Parent != null)                    {                        SetParentChecked(parentNode);                    }                }            }            else if(parentNode.Checked && !childNode.Checked)            {                parentNode.Checked = false;            }        }

/*————————————————

笔记代码如下(本人亲测):

public void ChuShiHuaJieDian()        {            TreeNode th11 = new TreeNode("一年级");//子树根            TreeNode th12 = new TreeNode("二年级");//子树根            TreeNode th13 = new TreeNode("三年级");//子树根            TreeNode th14 = new TreeNode("四年级");//子树根            TreeNode th15 = new TreeNode("五年级");//子树根            TreeNode th16 = new TreeNode("六年级");//子树根            TreeNode th1 = new TreeNode("小学", new TreeNode[] { th11, th12, th13, th14, th15, th16 });//根树根,根目录包含了子目录            treeView1.Nodes.Add(th1);            TreeNode th21 = new TreeNode("七年级");            TreeNode th22 = new TreeNode("八年级");            TreeNode th23 = new TreeNode("九年级");            TreeNode th2 = new TreeNode("中学", new TreeNode[] { th21, th22, th23 });            treeView1.Nodes.Add(th2);            TreeNode th34 = new TreeNode("高一");            TreeNode th35 = new TreeNode("高二");            TreeNode th36 = new TreeNode("高三");            TreeNode th3 = new TreeNode("高中", new TreeNode[] { th34, th35, th36 });            treeView1.Nodes.Add(th3);            TreeNode th47 = new TreeNode("大一");            TreeNode th48 = new TreeNode("大二");            TreeNode th49 = new TreeNode("大三");            TreeNode th4 = new TreeNode("大学", new TreeNode[] { th47, th48, th49 });            treeView1.Nodes.Add(th4);        }        private void Form1_Load(object sender, EventArgs e)        {            ChuShiHuaJieDian();        }        private void button1_Click(object sender, EventArgs e)//添加根节点        {            if (textBox1.Text != "")            {                TreeNode tn = new TreeNode(textBox1.Text.Trim());                //声明一个根节点                treeView1.Nodes.Add(tn);                //添加            }            else            {                MessageBox.Show("文件夹名称为空,不可创建新的文件夹");            }        }        private void button2_Click(object sender, EventArgs e)//删除根节点        {            TreeNode th = new TreeNode();            th = treeView1.SelectedNode;            //声明一个节点,保存已经选中的节点            if (th.Nodes.Count > 0)//查看该节点是否有子节点            {                DialogResult dr = MessageBox.Show("当前所选择的文件夹中有子文件夹,是否继续进行删除","删除窗口",MessageBoxButtons.YesNo);                if (dr == DialogResult.Yes)                {                    th.Remove();                }            }        }        private void button3_Click(object sender, EventArgs e)//无限添加子节点        {                      TreeNode tn1 = new TreeNode(textBox1.Text);//子节点            //声明一个节点,作为新开辟的节点空间            TreeNode tn = new TreeNode();//根节点            tn = treeView1.SelectedNode;            //声明一个节点,保存当前选中的节点            if (tn.Checked == true)            {                tn = treeView1.SelectedNode.Nodes.Add(tn1.Text);                //获得当前选中的节点,“此节点集合中”添加“新的子节点”            }        }        private void button4_Click(object sender, EventArgs e)//无限删除子节点        {            TreeNode tn = new TreeNode();            tn = treeView1.SelectedNode;            //声明一个节点,获取选中的节点            if (tn != null && tn.Checked == true && tn.Nodes.Count == 0)            {//tn不为空并且选定的并且tn没包含有子节点                tn.Remove();            }            else            {                DialogResult dr = MessageBox.Show("当前文件夹中包含文件夹,是否删除", "删除窗口", MessageBoxButtons.YesNo);                if(dr == DialogResult.Yes)                {                    tn.Remove();                }            }        }

个人倾述(不针对任何人):
别为自己的懒惰,找任何理由。
最近总听到有朋友说:命不好,命运是枷锁。
我本人很反感这些,自己不付出努力,总为自己的不成功找借口。即使你命好,别人想给你机会。但我很想问一句:你到底会做什么?你口中所说的自己真那么厉害?那么你现在为何还在抱怨?
只有你自己放弃自己,没有人能放弃你自己。

1 0