程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Windows窗體控件開發示例:擴展TreeView(3)

Windows窗體控件開發示例:擴展TreeView(3)

編輯:關於C語言

添加顯示和值成員屬性

擁有 DataSource 是實現復雜數據綁定的第一步,但該控件需要了解數據的哪些特定字段或屬性將用作顯示和值成員。Display 成員將用作樹節點的標題,而 Value 成員可通過節點的 Value 屬性進行訪問。這些屬性都是字符串,表示字段或屬性名,可以方便地添加到控件中:

Private m_ValueMember As String
Private m_DisplayMember As String
_
Public Property ValueMember() As String
Get
Return m_ValueMember
End Get
Set(ByVal Value As String)
m_ValueMember = Value
End Set
End Property
_
Public Property DisplayMember() As String
Get
Return m_DisplayMember
End Get
Set(ByVal Value As String)
m_DisplayMember = Value
End Set
End Property

在此 TreeVIEw 中,這些屬性將僅表示葉節點的 Display 和 Value 成員,每個分組級別的相應信息將在 AddGroup 方法中指定。

使用 CurrencyManager 對象

在前面探討的 DataSource 屬性中,創建了一個 CurrencyManager 類的實例,並存儲在類級別變量中。通過該對象訪問的 CurrencyManager 類是實現數據綁定的關鍵部分,因為它具有的屬性、方法和事件可實現以下功能:

  • 訪問數據源的基礎 IList 對象
  • 在數據源中檢索和設置對象字段或屬性,以及
  • 使您的控件與同一窗體中的其他數據綁定控件同步。

檢索屬性/字段值

CurrencyManager 對象允許您通過它的 GetItemPropertIEs 方法從數據源的單個項中檢索屬性或字段值,如 DisplayMember 或 ValueMember 字段的值。然後使用 PropertyDescriptor 對象獲取特定列表項上的特定字段或屬性的值。下面的代碼片斷顯示了這些 PropertyDescriptor 對象的創建方法以及如何使用 GetValue 函數獲取基礎數據源中某一項的屬性值。請注意 CurrencyManager 對象的 List 屬性:通過它可以訪問該控件綁定到的 IList 實例:

Dim myNewLeafNode As TreeLeafNode
Dim currObject As Object
currObject = cm.List(currentListIndex)
If Me.DisplayMember <> "" AndAlso Me.ValueMember <> "" Then
' 添加葉節點?
Dim pdValue As System.ComponentModel.PropertyDescriptor
Dim pdDisplay As System.ComponentModel.PropertyDescriptor
pdValue = cm.GetItemPropertIEs()(Me.ValueMember)
pdDisplay = cm.GetItemPropertIEs()(Me.DisplayMember)
myNewLeafNode = _
New TreeLeafNode(CStr(pdDisplay.GetValue(currObject)), _
currObject, _
pdValue.GetValue(currObject), _
currentListIndex)

GetValue 在返回對象時忽略屬性的基本數據類型,因此在使用返回值前需要對其進行轉換。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved