Welcome

首页 / 软件开发 / C# / C#中Winform的Treeview节点“正在展开...”的效果

C#中Winform的Treeview节点“正在展开...”的效果2011-07-04 csdn博客 jinjazz比较简单的做法,增加一个子节点提示.然后开线程请求真实的子节点,完毕后替换提示节点。

代码如下

view plaincopy to clipboardprint?

01.using System;02.using System.Collections.Generic;03.using System.ComponentModel;04.using System.Data;05.using System.Drawing;06.using System.Text;07.using System.Windows.Forms;08.09.namespace WindowsApplication1110.{11.public partial class Form1 : Form12.{13.14.//用于控制线程的方法15.public class ThreadStartInfo16.{17.public TreeNode node=null;18.19.//模拟载入数据20.publicvoid LoadNode()21.{22.System.Threading.Thread.Sleep(5000);23.string[] str = new string[] { "jinjazz", "csdn" ,"sina","google","yahoo","nba","fifa"};24.this.AddNode(node, str);25.}26.delegate void dAddNode(TreeNode node, string[] str);27.28.//添加节点29.void AddNode(TreeNode node, string[] str)30.{31.if (this.node.TreeView.FindForm().InvokeRequired)32.{33.this.node.TreeView.FindForm().Invoke(new dAddNode(AddNode), new object[] { node, str });34.}35.else36.{37.node.Nodes.Clear();38.foreach (string strNode in str)39.{40.node.Nodes.Add(strNode);41.}42.}43.44.}45.}46.47.public Form1()48.{49.InitializeComponent();50.}51.52.private void Form1_Load(object sender, EventArgs e)53.{54.//添加根节点55.this.treeView1.Nodes.Add(new TreeNode("root"));56.this.treeView1.AfterSelect += new TreeViewEventHandler(treeView1_AfterSelect);57.}58.59.void treeView1_AfterSelect(object sender, TreeViewEventArgs e)60.{61.if (e.Node.Tag==null||e.Node.Tag.ToString() == "")62.{63.ThreadStartInfo s = new ThreadStartInfo();64.s.node = e.Node;65.//已经载入过的就不要载入了。66.s.node.Tag = 1;67.new System.Threading.Thread(new System.Threading.ThreadStart(s.LoadNode)).Start();68.e.Node.Nodes.Add("正在载入..");69.}70.}71.}72.}