简单的小记录,省得去看控件属性详情了,基本常用的属于就几个

先是判断根节点是否存在控件中,如果不存在则创建,之前要添加了节点同样的方法

把根节点传到子节点的方法中,再判断是否在根节点里存在子节点,如果不存在则创建,

最后利用控件的双击事件获取当前选中的节点的内容。

 using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
 using System.Drawing;
 using System.Linq;
 using System.Text;
 using System.Windows.Forms;
 using System.Text.RegularExpressions;
 using DotNet4.Utilities;
 using System.Threading;

 namespace TreeviewDome
 {
     public partial class Form1 : Form
     {
         public Form1()
         {
             InitializeComponent();
         }

         private void button1_Click(object sender, EventArgs e)
         {
             Thread t = new Thread(ThreadProcessUrl);
             t.IsBackground = true;
             t.Start();
         }

         /// <summary>
         /// 根据页数生成Url
         /// </summary>
         private void ThreadProcessUrl()
         {
             int page = Convert.ToInt32(txtPages.Text);
             )
             {
                 ; i <= page; i++)
                 {
                     string address = string.Format(txtUrl.Text, i);
                     GetHtml(address);
                 }
             }
             else
             {
                 GetHtml(txtUrl.Text);
             }
         }

         /// <summary>
         /// 批量下载网页处理链接
         /// </summary>
         /// <param name="urls">传入Url</param>
         public void GetHtml(string urls)
         {
             HttpHelper http = new HttpHelper();
             HttpItem item = new HttpItem();
             item.URL = urls;
             HttpResult result = http.GetHtml(item);
             string html = result.Html;
             Regex r = new Regex("(?<=<span class=\"n-img\"><a href=\").*?(?=\")");
             MatchCollection m = r.Matches(html);
             if (!tvUrlList.Nodes.ContainsKey(urls)) //判断是否存在节点,不存在则创建
             {
                 TreeNode root = new TreeNode(urls); //创建根节点
                 this.Invoke(new Action(delegate
                     {
                         tvUrlList.Nodes.Add(root);
                     }));

                 foreach (Match mh in m)
                 {
                     TreeNode node = new TreeNode(mh.Value);
                     if (!root.Nodes.ContainsKey(mh.Value)) //判断根节点是否存在子节点,不存在则创建
                     {
                         this.Invoke(new Action(delegate
                             {
                                 root.Nodes.Add(node); //在根节点下添加子节点
                             }));
                     }
                 }
             }

         }

         /// <summary>
         /// 双击选中节点处理
         /// </summary>
         /// <param name="sender"></param>
         /// <param name="e"></param>
         private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
         {
             //获取被单击的节点
             TreeNode tn = e.Node;
             string ss=tvUrlList.TopNode.Text;
             if (tn.Text ==ss)
             {
                 MessageBox.Show("这个是不想要的");
             }
             else
             {
                 MessageBox.Show("当前选中的是:"+tn.Text);
             }
         }
     }
 }

下载:https://files.cnblogs.com/files/ncle/TreeviewDome.rar

TreeView简单的动态加载数据的更多相关文章

  1. echarts官网上的动态加载数据bug被我解决。咳咳/。

    又是昨天,为什么昨天发生了这么多事.没办法,谁让我今天没事可做呢. 昨天需求是动态加载数据,画一个实时监控的折线图.大概长这样. 我屁颠屁颠的把代码copy过来,一运行,caocaocao~bug出现 ...

  2. AppCan学习笔记----关闭页面listview动态加载数据

    AppCan页面关闭 AppCan 的页面是由两个HTML组成,如果要完全关闭的话需要在主HTML eg.index.html中关闭,关闭方法:appcan.window.close(-1); 管道 ...

  3. [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件

    页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空 ...

  4. 微信小程序(五) 利用模板动态加载数据

    利用模板动态加载数据,其实是对上一节静态数据替换成动态数据:

  5. mui 动态加载数据出现的问题处理 (silder轮播组件 indexedList索引列表 下拉刷新不能继续加载数据)

    mui-slider 问题:动态给mui的图片轮播添加图片,轮播不滚动. 解决:最后把滚动轮播图片的mui(".mui-slider").slider({interval: 300 ...

  6. ASP.NET MVC动态加载数据

    ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分:  Source Code 上图中,有一行代码: <tbody ...

  7. js实现滚动条来动态加载数据

    主要angular2+es6 data:Array<any> //展示的数据 allData:Array<any> //全部的数据 size:number = 10 //每次动 ...

  8. js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的

    js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样 ...

  9. js动态加载数据并合并单元格

    js动态加载数据合并单元格, 代码如下所示,可复制直接运行: <!DOCTYPE HTML> <html lang="en-US"> <head> ...

随机推荐

  1. CyclicBarrier的使用之王者荣耀打大龙

    最近一直整并发这块东西,顺便写点Java并发的例子,给大家做个分享,也强化下自己记忆,如果有什么错误或者不当的地方,欢迎大家斧正. LOL和王者荣耀的玩家很多,许多人应该都有打大龙的经历,话说前期大家 ...

  2. 【京东账户】——Mysql/PHP/Ajax爬坑之用户登录

    一.引言 实现京东的账户项目,功能模块之一,用户登录.要用到的是Apach环境,Mysql.PHP以及Ajax. 二.依据功能创建库.表.记录 创建库:jd 创建表:登录表 添加三条记录 CREATE ...

  3. oracle 表查询(二)

    1.使用逻辑操作符号问题:查询工资高于500或者是岗位为manager的雇员,同时还要满足他们的姓名首字母为大写的J?select * from emp where (sal > 500 or ...

  4. U方法

    U方法用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:U('地址','参数','伪静态','是否跳转','显示域名');在模板中使用U方法而不是固定 ...

  5. AF_INET

    AF_INET(又称PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的:而AF_UNIX 则是Unix系统本地通信. 选择AF_INET 的目的就是使用IPv4 ...

  6. ObjectSNMP

    下面的例子,就是使用ObjectSNMP获取RFC1213-MIB的例子:其中的system和ifTable对象就是对应的SNMPMIB中的system组合interface中的ifTable表. p ...

  7. 使用SoapUI工具做get请求和post请求接口测试

    祝大家节日快乐啦. 之前写过的一篇帖子已经介绍了SoapUI工具的基本使用,所以在此不再重复讲解关于建工程.建测试套件.添加用例等操作,可查看该篇文章详解:http://www.cnblogs.com ...

  8. bzoj1143 祭祀river(最大独立集)

    [CTSC2008]祭祀river Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2175  Solved: 1098[Submit][Status] ...

  9. [SDOI2011]工作安排

    Description 你的公司接到了一批订单.订单要求你的公司提供n类产品,产品被编号为1~n,其中第i类产品共需要Ci件.公司共有m名员工,员工被编号为1~m员工能够制造的产品种类有所区别.一件产 ...

  10. 19.Linux-USB总线驱动分析

    如下图所示,以windows为例,我们插上一个没有USB设备驱动的USB,就会提示你安装驱动程序 为什么一插上就有会提示信息? 是因为windows自带了USB总线驱动程序, USB总线驱动程序负责: ...