VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > C#教程 >
  • c#中的winform的TreeeView节点正在展开

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

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

C#中Winform的Treeview节点"正在展开..."的效果

  代码如下

  view plaincopy to clipboardprint?

usingSystem;  
usingSystem.Collections.Generic;  
usingSystem.ComponentModel;  
usingSystem.Data;  
usingSystem.Drawing;  
usingSystem.Text;  
usingSystem.Windows.Forms;  
namespaceWindowsApplication11  
{  
  publicpartialclassForm1:Form  
  {  
    //用于控制线程的方法  
    publicclassThreadStartInfo  
    {  
      publicTreeNodenode=null;  
      //模拟载入数据  
      public voidLoadNode()  
      {  
        System.Threading.Thread.Sleep(5000);  
        string[]str=newstring[]{"jinjazz","csdn","sina","google","yahoo","nba","fifa"};  
        this.AddNode(node,str);  
      }  
      delegatevoiddAddNode(TreeNodenode,string[]str);  
      //添加节点  
      voidAddNode(TreeNodenode,string[]str)  
      {  
        if(this.node.TreeView.FindForm().InvokeRequired)  
        {  
          this.node.TreeView.FindForm().Invoke(newdAddNode(AddNode),newobject[]{node,str});  
        }  
        else 
        {  
          node.Nodes.Clear();  
          foreach(stringstrNodeinstr)  
          {  
            node.Nodes.Add(strNode);  
          }  
        }  
      }  
    }  
    publicForm1()  
    {  
      InitializeComponent();  
    }  
    privatevoidForm1_Load(objectsender,EventArgse)  
    {  
      //添加根节点  
      this.treeView1.Nodes.Add(newTreeNode("root"));  
      this.treeView1.AfterSelect+=newTreeViewEventHandler(treeView1_AfterSelect);  
    }  
    voidtreeView1_AfterSelect(objectsender,TreeViewEventArgse)  
    {  
      if(e.Node.Tag==null||e.Node.Tag.ToString()=="")  
      {  
        ThreadStartInfos=newThreadStartInfo();  
        s.node=e.Node;  
        //已经载入过的就不要载入了。  
        s.node.Tag=1;  
        newSystem.Threading.Thread(newSystem.Threading.ThreadStart(s.LoadNode)).Start();  
        e.Node.Nodes.Add("正在载入..");  
      }  
    }  
  }  
} 



相关教程