首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

.NET WinForms TreeView 節點附加 ID 值最佳實踐

     編輯:關於.NET

問題背景

WebForms TreeView 擁有 SelectedNode.Text 與 SelectedNode.Value 雙屬性,但 WinForms TreeView 僅有 Text 屬性,缺少 Value 屬性。開發者常需為節點附加 ID 等業務標識,如何解決?

解決方案:善用 Tag 屬性

絕大多數 WinForms 控件(包括 TreeNode)均提供 Tag 屬性(型別為 object),可儲存任意自訂資料。這是附加 ID 的標準做法。

完整代碼範例

// 建立根節點
TreeNode root = new TreeNode();
root.Text = "根節點";
treeView1.Nodes.Add(root);

// 建立子節點並附加 ID
TreeNode tn1 = new TreeNode();
tn1.Tag = 1;           // 節點 1 的 ID 為 1
tn1.Text = "節點 1";
root.Nodes.Add(tn1);

// 介面優化
treeView1.ExpandAll();
treeView1.ShowLines = true;

讀取 ID 值

int TnID = Convert.ToInt32(tn1.Tag);  // 取得節點 ID

進階應用場景

  • 儲存複雜物件:Tag 可存放完整業務實體物件,不限於單一 ID
  • 多欄位資料:存放 Dictionary、DataRow 或自訂類別實例
  • 遞迴樹構建:配合遞迴函式從資料庫載入層級資料時,每個節點 Tag 存對應實體

常見誤區與注意事項

  1. 型別轉換安全:讀取時建議用 as 或 is 檢查型別,避免 InvalidCastException
  2. 序列化限制:Tag 內容若為非可序列化物件,TreeView 狀態持久化會失敗
  3. 記憶體洩漏風險:大量節點存放大型物件時注意釋放

總結

WinForms TreeView 節點附加 ID/業務資料,Tag 屬性是官方推薦、最簡潔、功能最完整的方案。無需繼承 TreeNode 或維護外部對照表,一行代碼解決問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved