zoukankan      html  css  js  c++  java
  • C#中Winform的Treeview节点"正在展开..."的效果

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

    代码如下

    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("正在载入..");
                }
            }
        }
    }
  • 相关阅读:
    HDU 1202 The calculation of GPA
    HDU 1201 18岁生日
    HDU 1200 To and Pro
    C语言实现的图的深度搜索与广度搜索程序
    深度优先搜索和广度优先搜索的深入讨论
    Linux sftp 安全文件传输命令
    看白鹿原有感
    中国人民抗日战争暨世界反法西斯战争胜利70周年(20150903)
    高一的我曾对自己说"要放慢脚步去生活"!?
    网络营销(续)
  • 原文地址:https://www.cnblogs.com/cl1024cl/p/6204937.html
Copyright © 2011-2022 走看看