国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

Winform中Treeview實現按需加載的方法

2020-01-24 02:21:25
字體:
來源:轉載
供稿:網友

本文實例講述了Winform中Treeview實現按需加載的方法,非常具有實用價值。分享給大家供大家參考。具體分析如下:

最近項目里用到treeview,原先設計的是一開始就把所有數據都加載到treeview里,后來發現客戶的數據量實在太大,加載所有數據要2分鐘,這個是客戶沒法接受的。后來就考慮到用戶也不是一開始就要看所有的數據,用戶也是一層一層地展開,所以我們就考慮是不是可以實現以當用戶展開某個結點時才加載當前結點下面的數據。一番查找后,發現treeview有BeforeExpand事件可以實現我們的需求。

下面介紹具體的實現代碼:

1. 首先只加載各部門(結點)的信息

復制代碼 代碼如下:
List<string> m_Departments = new List<string>() { "湖北.黃石", "湖北.鄂州", "湖北.武漢" };
private void AddDepartMents(List<string> departments)
{
     if (m_Root == null)
     {
         var root = departments[0].Split('.')[0];
         m_Root = new TreeNode(root);
         m_Root.Tag = root;
         treeView1.Nodes.Add(m_Root);
     }
     foreach (var department in departments)
     {
         var parent = m_Root;
         var dts = department.Split('.');
         for (int i = 1; i < dts.Length; i++)
         {
             if (!m_OrgNodeManager.ContainsKey(dts[i]))
             {
                 var child = new TreeNode(dts[i],1,1);
                 child.Tag = dts[i];
                 child.ToolTipText = department;
                 m_OrgNodeManager.Add(dts[i], child);
                 parent.Nodes.Add(child);
                 parent = child;
             }
         }
         parent.Nodes.Add("");
     }
}

這里要注意,每個結點加完后,要加上一個空的子結點parent.Nodes.Add(""); 不然就沒有那個加號讓你點了。

2. 實現BeforeExpand事件

復制代碼 代碼如下:
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
     TreeNode curentNode = e.Node;
     if (curentNode.ImageIndex == 1)
     {
         curentNode.Nodes.Clear();
         foreach (var user in m_UserManager)
         {
             if (user.Value.ToString() == curentNode.ToolTipText.ToString())
             {
                 TreeNode userNode = new TreeNode(user.Key);
                 curentNode.Nodes.Add(userNode);
             }
         }
     }
}

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巨野县| 安达市| 汨罗市| 新化县| 兴义市| 康马县| 内黄县| 台东县| 忻城县| 梅河口市| 万年县| 祁门县| 平塘县| 松潘县| 克什克腾旗| 扎鲁特旗| 惠水县| 贵阳市| 秭归县| 汝阳县| 南通市| 化德县| 浦北县| 育儿| 广灵县| 陆良县| 翁牛特旗| 泾源县| 富阳市| 冷水江市| 吉林市| 宜丰县| 吉水县| 宿州市| 鲁山县| 洪雅县| 怀柔区| 万年县| 上杭县| 剑川县| 商丘市|