比较简单的做法,增加一个子节点提示.然后开线程请求真实的子节点,完毕后替换提示节点。
代码如下
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Text;
- using System.Windows.Forms;
-
- namespace WindowsApplication11
- {
- public partial class Form1 : Form
- {
-
-
- public class ThreadStartInfo
- {
- public TreeNode node=null;
-
-
- public void LoadNode()
- {
- System.Threading.Thread.Sleep(5000);
- string[] str = new string[] { "jinjazz", "csdn" ,"sina","google","yahoo","nba","fifa"};
- this.AddNode(node, str);
- }
- delegate void dAddNode(TreeNode node, string[] str);
-
-
- void AddNode(TreeNode node, string[] str)
- {
- if (this.node.TreeView.FindForm().InvokeRequired)
- {
- this.node.TreeView.FindForm().Invoke(new dAddNode(AddNode), new object[] { node, str });
- }
- else
- {
- node.Nodes.Clear();
- foreach (string strNode in str)
- {
- node.Nodes.Add(strNode);
- }
- }
-
- }
- }
-
- public Form1()
- {
- InitializeComponent();
- }
-
- private void Form1_Load(object sender, EventArgs e)
- {
-
- this.treeView1.Nodes.Add(new TreeNode("root"));
- this.treeView1.AfterSelect += new TreeViewEventHandler(treeView1_AfterSelect);
- }
-
- void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
- {
- if (e.Node.Tag==null||e.Node.Tag.ToString() == "")
- {
- ThreadStartInfo s = new ThreadStartInfo();
- s.node = e.Node;
-
- s.node.Tag = 1;
- new System.Threading.Thread(new System.Threading.ThreadStart(s.LoadNode)).Start();
- e.Node.Nodes.Add("正在载入..");
- }
- }
- }
- }
引用:
http://blog.csdn.net/jinjazz/archive/2008/05/29/2494593.aspx
posted @
2008-08-08 15:52 刘飞 阅读(618) |
评论 (0) |
编辑 收藏