日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TreeViewVisitor: 一个快捷访问 TreeView 控件节点的帮助类

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TreeViewVisitor: 一个快捷访问 TreeView 控件节点的帮助类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Web 開發中經常用到 TreeView 控件,一個很常見的操作就是遍歷所有的節點。但是該控件本身并未提供此功能,每次都要手工寫遞歸訪問的函數,非常煩瑣。所以我寫了一個簡單的幫助類來解決這個問題,這樣就不需要每次用遞歸來訪問了:

using?System;
using?System.Data;
using?System.Configuration;
using?System.Web;
using?System.Web.Security;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.Web.UI.WebControls.WebParts;
using?System.Web.UI.HtmlControls;
using?System.Collections.Generic;

namespace?CmsNet2.Components?{
????
///?<summary>
????
///?TreeViewVisitor?by?Neil?Chen,?2006-09-28
????
///?</summary>
????public?class?TreeViewVisitor?{

????????
public?TreeViewVisitor(TreeView?treeView)?{
????????????
this.treeView?=?treeView;
????????}

????????
private?TreeView?treeView;

????????
public?TreeView?TreeView?{
????????????
get?{?return?treeView;?}
????????????
set?{?treeView?=?value;?}
????????}

????????
private?void?Walk(TreeNode?node)?{
????????????
if?(node?==?null)?{
????????????????nodes.Add(treeView.Nodes[
0]);

????????????????
foreach?(TreeNode?childNode?in?treeView.Nodes[0].ChildNodes)?{
????????????????????Walk(childNode);
????????????????}
????????????}?
else?{
????????????????nodes.Add(node);

????????????????
foreach?(TreeNode?childNode?in?node.ChildNodes)?{
????????????????????Walk(childNode);
????????????????}
????????????}????????????????????????
????????}

????????
private?List<TreeNode>?nodes;

????????
public?IEnumerable<TreeNode>?GetAllTreeNodes()?{
????????????nodes?
=?new?List<TreeNode>();

????????????Walk(
null);

????????????
foreach?(TreeNode?node?in?nodes)?{
????????????????yield?
return?node;
????????????}
????????}
????}
}

一個簡單的使用范例:遍歷所有節點,并將符合條件的節點選中。

public?void?SetCheckedCategories(List<Category>?categories)?{
????
//?創建訪問器對象
????TreeViewVisitor?visitor?=?new?TreeViewVisitor(tvCategories);
????
????
//?得到“鋪平”了的所有節點集合
????IEnumerable<TreeNode>?nodes?=?visitor.GetAllTreeNodes();

????
//?進行你需要的訪問操作
????foreach?(TreeNode?node?in?nodes)?{
????????
foreach?(Category?category?in?categories)?{
????????????
if?(category.CategoryId?==?int.Parse(node.Value))?{
????????????????node.Checked?
=?true;????????????????????????
????????????}
????????}
????}???????????
}

當然,目前這個類的應用范圍很局限,僅僅限于 TreeView 控件。但如果我們進一步思考,則可以很容易的推廣到對普通的樹狀結構,或者多級菜單的訪問邏輯中。從而實現與具體控件無關的訪問邏輯。

因為業余時間有限,先到此打住。

總結

以上是生活随笔為你收集整理的TreeViewVisitor: 一个快捷访问 TreeView 控件节点的帮助类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。