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

Windows Forms 控件開發實戰:擴充 TreeView 實現資料繫結(三)

     編輯:關於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)
End If

GetValue 在回傳物件時會忽略屬性的基本資料類型,因此在使用回傳值前需進行轉換。

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