Winform中Treeview實(shí)現(xiàn)按需加載的方法
本文實(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))的信息
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事件
{
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)文章
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-11C# .NET實(shí)現(xiàn)掃描識(shí)別圖片中的文字
本文以C#及VB.NET代碼為例,介紹如何掃描并讀取圖片中的文字。文中的示例代碼介紹詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2021-12-12C#中Write()和WriteLine()的區(qū)別分析
這篇文章主要介紹了C#中Write()和WriteLine()的區(qū)別分析,需要的朋友可以參考下2020-11-11C#實(shí)現(xiàn)任意數(shù)據(jù)類型轉(zhuǎn)成json格式輸出
C#實(shí)現(xiàn)任意數(shù)據(jù)類型轉(zhuǎn)成json格式輸出。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2013-10-10