欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Winform中Treeview實(shí)現(xiàn)按需加載的方法

 更新時(shí)間:2014年10月16日 08:57:06   投稿:shichen2014  
這篇文章主要介紹了Winform中Treeview實(shí)現(xiàn)按需加載的方法,針對(duì)大數(shù)據(jù)量的情況下非常具有實(shí)用價(jià)值,需要的朋友可以參考下

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

最近項(xiàng)目里用到treeview,原先設(shè)計(jì)的是一開始就把所有數(shù)據(jù)都加載到treeview里,后來發(fā)現(xiàn)客戶的數(shù)據(jù)量實(shí)在太大,加載所有數(shù)據(jù)要2分鐘,這個(gè)是客戶沒法接受的。后來就考慮到用戶也不是一開始就要看所有的數(shù)據(jù),用戶也是一層一層地展開,所以我們就考慮是不是可以實(shí)現(xiàn)以當(dāng)用戶展開某個(gè)結(jié)點(diǎn)時(shí)才加載當(dāng)前結(jié)點(diǎn)下面的數(shù)據(jù)。一番查找后,發(fā)現(xiàn)treeview有BeforeExpand事件可以實(shí)現(xiàn)我們的需求。

下面介紹具體的實(shí)現(xiàn)代碼:

1. 首先只加載各部門(結(jié)點(diǎn))的信息

復(fù)制代碼 代碼如下:
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("");
     }
}

這里要注意,每個(gè)結(jié)點(diǎn)加完后,要加上一個(gè)空的子結(jié)點(diǎn)parent.Nodes.Add(""); 不然就沒有那個(gè)加號(hào)讓你點(diǎn)了。

2. 實(shí)現(xiàn)BeforeExpand事件

復(fù)制代碼 代碼如下:
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);
             }
         }
     }
}

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#集合之列表的用法

    C#集合之列表的用法

    這篇文章介紹了C#集合之列表的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • C#使用ML.Net完成人工智能預(yù)測

    C#使用ML.Net完成人工智能預(yù)測

    這篇文章主要介紹了C#使用ML.Net完成人工智能預(yù)測的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • C# 多線程學(xué)習(xí)之基礎(chǔ)入門

    C# 多線程學(xué)習(xí)之基礎(chǔ)入門

    線程(英語:thread)是操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。它被包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。今天小編就帶大家了解一下C#中的多線程,快來學(xué)習(xí)一下吧
    2021-12-12
  • python實(shí)現(xiàn)AutoResetEvent類的阻塞模式方法解析

    python實(shí)現(xiàn)AutoResetEvent類的阻塞模式方法解析

    AutoResetEvent :當(dāng)某個(gè)線程執(zhí)行到WaitOne()方法時(shí),該線程則會(huì)處于阻塞模式,當(dāng)被調(diào)用了Set()方法,阻塞的線程則會(huì)繼續(xù)向下執(zhí)行,其狀態(tài)立即被自動(dòng)設(shè)置為阻塞模式
    2012-11-11
  • C#如何自動(dòng)識(shí)別文件的編碼

    C#如何自動(dòng)識(shí)別文件的編碼

    相信每位程序員在日常學(xué)習(xí)工作中,文件編碼識(shí)別是必不可少的,一旦編碼錯(cuò)誤就會(huì)出現(xiàn)讓人頭疼的亂碼,那么下面這篇文章將給大家介紹如何通過C#來自動(dòng)識(shí)別文件的編碼。文中給出了詳細(xì)的示例代碼,對(duì)大家的理解很有幫助,下面跟著小編一起來學(xué)習(xí)學(xué)習(xí)吧。
    2016-12-12
  • C# .NET實(shí)現(xiàn)掃描識(shí)別圖片中的文字

    C# .NET實(shí)現(xiàn)掃描識(shí)別圖片中的文字

    本文以C#及VB.NET代碼為例,介紹如何掃描并讀取圖片中的文字。文中的示例代碼介紹詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2021-12-12
  • C#中Write()和WriteLine()的區(qū)別分析

    C#中Write()和WriteLine()的區(qū)別分析

    這篇文章主要介紹了C#中Write()和WriteLine()的區(qū)別分析,需要的朋友可以參考下
    2020-11-11
  • C#實(shí)現(xiàn)任意數(shù)據(jù)類型轉(zhuǎn)成json格式輸出

    C#實(shí)現(xiàn)任意數(shù)據(jù)類型轉(zhuǎn)成json格式輸出

    C#實(shí)現(xiàn)任意數(shù)據(jù)類型轉(zhuǎn)成json格式輸出。需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-10-10
  • 詳解如何在C#/.NET Core中使用責(zé)任鏈模式

    詳解如何在C#/.NET Core中使用責(zé)任鏈模式

    這篇文章主要介紹了詳解如何在C#/.NET Core中使用責(zé)任鏈模式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 關(guān)于c#中單例模式的一些問題

    關(guān)于c#中單例模式的一些問題

    這篇文章主要給大家介紹了關(guān)于c#中單例模式的一些問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11

最新評(píng)論