计算机小百科
一分耕耘,一分收获
posts - 1,comments - 0,trackbacks - 0

比较简单的做法,增加一个子节点提示.然后开线程请求真实的子节点,完毕后替换提示节点。 

代码如下

  1. using System;   
  2. using System.Collections.Generic;   
  3. using System.ComponentModel;   
  4. using System.Data;   
  5. using System.Drawing;   
  6. using System.Text;   
  7. using System.Windows.Forms;   
  8.   
  9. namespace WindowsApplication11   
  10. {   
  11.     public partial class Form1 : Form   
  12.     {   
  13.   
  14.         //用于控制线程的方法   
  15.         public class ThreadStartInfo   
  16.         {   
  17.             public TreeNode node=null;   
  18.   
  19.             //模拟载入数据   
  20.             public  void 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.                 else  
  36.                 {   
  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. }  
引用:http://blog.csdn.net/jinjazz/archive/2008/05/29/2494593.aspx
posted @ 2008-08-08 15:52 刘飞 阅读(618) | 评论 (0)编辑 收藏
仅列出标题