Winform中Treeview實現按需加載的方法
本文實例講述了Winform中Treeview實現按需加載的方法,非常具有實用價值。分享給大家供大家參考。具體分析如下:
最近項目里用到treeview,原先設計的是一開始就把所有數據都加載到treeview里,后來發(fā)現客戶的數據量實在太大,加載所有數據要2分鐘,這個是客戶沒法接受的。后來就考慮到用戶也不是一開始就要看所有的數據,用戶也是一層一層地展開,所以我們就考慮是不是可以實現以當用戶展開某個結點時才加載當前結點下面的數據。一番查找后,發(fā)現treeview有BeforeExpand事件可以實現我們的需求。
下面介紹具體的實現代碼:
1. 首先只加載各部門(結點)的信息
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事件
{
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#程序設計有所幫助。
相關文章
C#利用ms office實現office轉pdf的示例代碼
這篇文章主要介紹了C#利用ms office實現office轉pdf的詳細方法,文中通過代碼示例和圖文講解的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-09-09
C#中IsNullOrEmpty和IsNullOrWhiteSpace的使用方法及區(qū)別解析
今天我們將探討C#中兩個常用的字符串處理方法:IsNullOrEmpty和IsNullOrWhiteSpace,本文中,我們將詳細解釋這兩個方法的功能和使用場景,并幫助您更好地理解它們之間的區(qū)別,本文結合實例代碼給大家介紹的非常詳細,需要的朋友參考下吧2023-07-07

