TreeView简单的动态加载数据
简单的小记录,省得去看控件属性详情了,基本常用的属于就几个
先是判断根节点是否存在控件中,如果不存在则创建,之前要添加了节点同样的方法
把根节点传到子节点的方法中,再判断是否在根节点里存在子节点,如果不存在则创建,
最后利用控件的双击事件获取当前选中的节点的内容。


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简单的动态加载数据的更多相关文章
- echarts官网上的动态加载数据bug被我解决。咳咳/。
又是昨天,为什么昨天发生了这么多事.没办法,谁让我今天没事可做呢. 昨天需求是动态加载数据,画一个实时监控的折线图.大概长这样. 我屁颠屁颠的把代码copy过来,一运行,caocaocao~bug出现 ...
- AppCan学习笔记----关闭页面listview动态加载数据
AppCan页面关闭 AppCan 的页面是由两个HTML组成,如果要完全关闭的话需要在主HTML eg.index.html中关闭,关闭方法:appcan.window.close(-1); 管道 ...
- [JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件
页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空 ...
- 微信小程序(五) 利用模板动态加载数据
利用模板动态加载数据,其实是对上一节静态数据替换成动态数据:
- mui 动态加载数据出现的问题处理 (silder轮播组件 indexedList索引列表 下拉刷新不能继续加载数据)
mui-slider 问题:动态给mui的图片轮播添加图片,轮播不滚动. 解决:最后把滚动轮播图片的mui(".mui-slider").slider({interval: 300 ...
- ASP.NET MVC动态加载数据
ASP.NET MVC动态加载数据,一般的做法是使用$.each方法来循环产生tabel: 你可以在html时先写下非动态的部分: Source Code 上图中,有一行代码: <tbody ...
- js实现滚动条来动态加载数据
主要angular2+es6 data:Array<any> //展示的数据 allData:Array<any> //全部的数据 size:number = 10 //每次动 ...
- js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件--转他人的 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样 ...
- js动态加载数据并合并单元格
js动态加载数据合并单元格, 代码如下所示,可复制直接运行: <!DOCTYPE HTML> <html lang="en-US"> <head> ...
随机推荐
- 文件的inode号操作
linux给每个文件生成了一个唯一的inode编号,命令行下操作文件需要输入文件名,如果遇到文件名特别难输入(或者包含特殊符号)的情况,可以用inode号操作文件. 可以用这个命令查看inode号: ...
- SimpleRpc-序列化与反序列化的设计与实现
为什么需要序列化和反序列化? 假设你是客户端,现在要调用远程的加法计算服务,你与服务端商定好了发送数据的格式:发送8个字节的请求,前4字节是第一个数,后4字节是第二个数,服务端读取数据的时候也按照商定 ...
- 凸包GiftWrapping GrahamScan 算法实现
开始 游戏内有需求做多边形碰撞功能,但是接入box2d相对游戏的需求来说太重度了.所以准备自己实现碰撞. 确定多边形,必然要用到凸包的算法.在github上也找到了一些lua实现,但是这里的算法没有考 ...
- AngularJS--控制器(Controller)
点击查看AngularJS系列目录 转载请注明出处:http://www.cnblogs.com/leosx/ 理解控制器 在AngularJS的控制器中,构造函数会有Scope参数. 当一个控制器通 ...
- iOS9.3越狱
转载:http://bbs.feng.com/read-htm-tid-10680439.html 首先是Windows英文版越狱的的教程 下载 Cydia Impactor 工具(用来安装越狱A ...
- PyTorch教程之Neural Networks
我们可以通过torch.nn package构建神经网络. 现在我们已经了解了autograd,nn基于autograd来定义模型并对他们有所区分. 一个 nn.Module模块由如下部分构成:若干层 ...
- jQuery: Callbacks
jQuery 中提供了一个Callback的工具类Callbacks,它提供了一个Callback Chain.使用它可以在一个chain上来执行相关操作.它也是jQuery中的ajax, Defer ...
- 深度学习框架caffe在macOS Heigh Sierra上安装过程实录
第一步.安装依赖库 brew install -vd snappy leveldb gflags glog szip lmdb brew tap homebrew/science brew insta ...
- 虚拟机中ubuntu-16.04 Linux系统下配置mysql数据库,并在windows下使用navicat远程连接
Linux系统下mysql数据库安装配置步骤: 1.在服务器上安装mysql:sudo apt-get install mysql-server sudo apt-get install mysql- ...
- [Gitlab运维系列]Gitlab 403 forbidden 并发引起IP被封
问题 带着团队使用Git,使用的是自搭建的Gitlab.但今天打开页面的时候显示的是空白页面,上面还有一次文本Forbidden. 原因 Gitlab使用rack_attack做了并发访问的限制. 解 ...