摘要:Visual Basic 2005 - 讀者的問題與解答
原發問問題
我請教的是關於VB那本書的:《Visual Basic 2005檔案IO與資料存取秘訣》
VB2005資料繫結語法如下:
Me.TextBox1.DataBindings.Add("Text",myCustomer,"ID")
而在VB2005中,多了一個Boolen參數請問有什麼用的?
Me.TextBox1.DataBindings.Add("Text",myCustomer,"ID",True)
回答
親愛的讀者您好,很感謝您對於章立民研究室的支持,有關於您提到的問題,回覆如下。
DataBindings.Add 方法的第四個參數表示是否要使用 Binding 物件的 FormatString 屬性來格式化。您必須將 DataBindings.Add 方法的第四個參數設定成 True,Binding 物件的 FormatString 屬性才會生效。
以下面的程式碼而言,我們將表單上三個 TextBox 控制項的 Text 屬性分別繫結至「貨品」資料表物件的「編號」、「名稱」與「成本」欄位,其中最特別之處,就是顯示成本資料的 TextBox 控制項會以貨幣格式來顯示成本資料。欲達此目的,首先在進行資料繫結時必須將 DataBindings.Add 方法的第四個參數設定成True,然後再將它所傳回之 Binding 物件的 FormatString 屬性設定成所需的格式化字串:
' 建立一個名稱為「貨品」的 DataTable 物件並加入三個欄位。
'
' 編號: int
' 姓名: string
' 成本: Decimal
'
Dim myTable As New DataTable("貨品")
myTable.Columns.Add("編號", Type.GetType("System.Int32"))
myTable.Columns.Add("名稱", Type.GetType("System.String"))
myTable.Columns.Add("成本", Type.GetType("System.Decimal"))
myTable.Rows.Add(0, "蘋果", 10D)
myTable.Rows.Add(1, "柳丁", 11.1D)
myTable.Rows.Add(2, "芒果", 12.2D)
' 將 TextBox 控制項的 Text 屬性(字串型別)繫結至
' 「貨品」資料表的「編號」欄位(整數型別)。
' 繫結執行階段會處理字串與整數的型別轉換。
Me.txtId.DataBindings.Add("Text", myTable, "編號", True)
' 將 TextBox 控制項的 Text 屬性(字串型別)繫結至
' 「貨品」資料表的「名稱」欄位(字串型別)。
Me.txtName.DataBindings.Add("Text", myTable, "名稱", True)
' 將 TextBox 控制項的 Text 屬性(字串型別)繫結至
' 「貨品」資料表的「成本」欄位(Decimal 型別)。
'
' 繫結執行階段會將成本值顯示成貨幣值(亦即會加上貨幣符號 NT$)。
'
' 請特別注意,此處我們是先建立一個 Binding 物件,
' 接著設定其 FormatString 屬性,然後將它新增至控制項的
ControlBindingsCollection 集合中。
Dim cb As Binding = New Binding("Text", myTable, "成本", True)
' .NET Framework 貨幣格式字串。
cb.FormatString = "c"
' 將 Binding 物件新增至控制項的 ControlBindingsCollection 集合中。
Me.txtCost.DataBindings.Add(cb)
章立民研究室