TreeView简单的动态加载数据

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

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

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

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

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Windows.Forms;
  9 using System.Text.RegularExpressions;
 10 using DotNet4.Utilities;
 11 using System.Threading;
 12
 13 namespace TreeviewDome
 14 {
 15     public partial class Form1 : Form
 16     {
 17         public Form1()
 18         {
 19             InitializeComponent();
 20         }
 21
 22         private void button1_Click(object sender, EventArgs e)
 23         {
 24             Thread t = new Thread(ThreadProcessUrl);
 25             t.IsBackground = true;
 26             t.Start();
 27         }
 28
 29         /// <summary>
 30         /// 根据页数生成Url
 31         /// </summary>
 32         private void ThreadProcessUrl()
 33         {
 34             int page = Convert.ToInt32(txtPages.Text);
 35             if (page > 0)
 36             {
 37                 for (int i = 1; i <= page; i++)
 38                 {
 39                     string address = string.Format(txtUrl.Text, i);
 40                     GetHtml(address);
 41                 }
 42             }
 43             else
 44             {
 45                 GetHtml(txtUrl.Text);
 46             }
 47         }
 48
 49         /// <summary>
 50         /// 批量下载网页处理链接
 51         /// </summary>
 52         /// <param name="urls">传入Url</param>
 53         public void GetHtml(string urls)
 54         {
 55             HttpHelper http = new HttpHelper();
 56             HttpItem item = new HttpItem();
 57             item.URL = urls;
 58             HttpResult result = http.GetHtml(item);
 59             string html = result.Html;
 60             Regex r = new Regex("(?<=<span class=\"n-img\"><a href=\").*?(?=\")");
 61             MatchCollection m = r.Matches(html);
 62             if (!tvUrlList.Nodes.ContainsKey(urls)) //判断是否存在节点,不存在则创建
 63             {
 64                 TreeNode root = new TreeNode(urls); //创建根节点
 65                 this.Invoke(new Action(delegate
 66                     {
 67                         tvUrlList.Nodes.Add(root);
 68                     }));
 69
 70                 foreach (Match mh in m)
 71                 {
 72                     TreeNode node = new TreeNode(mh.Value);
 73                     if (!root.Nodes.ContainsKey(mh.Value)) //判断根节点是否存在子节点,不存在则创建
 74                     {
 75                         this.Invoke(new Action(delegate
 76                             {
 77                                 root.Nodes.Add(node); //在根节点下添加子节点
 78                             }));
 79                     }
 80                 }
 81             }
 82
 83         }
 84
 85         /// <summary>
 86         /// 双击选中节点处理
 87         /// </summary>
 88         /// <param name="sender"></param>
 89         /// <param name="e"></param>
 90         private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
 91         {
 92             //获取被单击的节点
 93             TreeNode tn = e.Node;
 94             string ss=tvUrlList.TopNode.Text;
 95             if (tn.Text ==ss)
 96             {
 97                 MessageBox.Show("这个是不想要的");
 98             }
 99             else
100             {
101                 MessageBox.Show("当前选中的是:"+tn.Text);
102             }
103         }
104     }
105 }

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

时间: 2024-11-18 14:13:14

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

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

页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空间,到底部时,会动态加载剩余的说说或者是日志 今天我们就来看看他们的实现思路和js控制动态加载的代码 下面的代码主要是控制滚动条下拉时的加载事件的 在下面代码说明出,写上你的操作即可,无论是加载图片还是加载记录数据  都可以 别忘了引用jquery类库 [JavaScript] 纯文本查看 复制代码

ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)

ListView动态加载数据分页(使用Handler+线程和AsyncTask两种方法)

android左右滑动加载分页以及动态加载数据

android UI 往右滑动,滑动到最后一页就自动加载数据并显示 如图: Java代码 package cn.anycall.ju; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.content.ActivityNotFoundException; impo

ASP.NET MVC动态加载数据

ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分: <table> <tr> <th style="width:10px;"><input id="SelectAll" type="checkbox" /></th> <th>ID</th> <th>Port_Start&l

滚屏加载--无刷新动态加载数据技术的应用

index.html <?php require_once('connect.php'); //连接数据库 $user = array('demo1','demo2','demo3','demo3','<de></de>mo4'); //模拟了几个用户 ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm

C# checklistbox控件用法总结(怎样得到多选的值,以及动态加载数据)

C# checklistbox控件用法总结(怎样得到多选的值,以及动态加载数据) 一般认为:foreach (object obj in checkedListBox1.SelectedItems)即可遍历选中的值. 其实这里遍历的只是高亮的值并不是打勾的值.遍历打勾的值要用下面的代码: for (int i = 0; i < checkedListBox1.Items.Count; i++) { if (checkedListBox1.GetItemChecked(i)) { MessageB

用collection view动态加载数据卡顿的可能原因

在用collectionview动态加载数据时有个好处,就是cell得到了复用,如果整屏显示一个cell,最多只有两个cell,坏处就是需要不断的刷新cell,这时候容易卡顿. 每次滑动collectionview会调用代理方法,获取新的cell,这时你要将数据传给cell并进行显示. 现在的情况是快速滑动的时候和慢速滑动的时候不会卡顿,快速滑动的时候不会请求数据,所以卡顿原因可能是在请求数据的时候,慢速滑动的时候因为间隔时间长,数据应该都加载好了,所以卡顿原因可能是间隔过短,cell已经被创建

动态加载数据新的可行性

动态加载数据就是随着用户的交互情况来加载数据,避免一次全部加载浪费流量和卡顿. 最典型的情况就是用户查看每天的信息这种状况. 最开始我的做法是用一个scrollview和三个view来解决.先实现一个轮播图效果,每次用户左滑和右滑之后又将页面跳回到中间的页面,这个时候中间页面的状态应该和左滑或右滑页面的状态相同.所以每次都是先加载左中右三天数据,滑动到右边后,重置三天数据跳转到中间. 但这种有个问题,就是很难实现bounce反弹效果,即使实现了代码会非常乱,还有就是快速滑动的时候造成的无法滑动问

MiniUI treeGrid 动态加载数据与静态加载数据的区别

说明:treegrid静态数据加载时数据结构是一棵树包含children节点集合,而采用动态加载数据时数据是List结构的具体项. 静态加载数据 test1.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="ht