2011-02-28 38 views
1

我有一個表格上下面的代碼:的WinForms,的BindingList,BindingSource的 - 無法綁定到屬性/列ID

Public Sub Init(ByVal SelectedItems As List(Of Cheque)) 
     Items = New BindingList(Of Cheque)(SelectedItems) 
     BindingSource1.DataSource = Items 
     txtNo.DataBindings.Add("Text", Items, "Number") 
     txtChequeAmount.DataBindings.Add("Text", Items, "Amount") 
     lbId.DataBindings.Add("Text", Items, "Id") 
    End Sub 

這段代碼被稱爲像這樣:

... 
fmEdit.Init(myList) 
fmEdit.Show() 

所有變量都填充似乎要通過DataBindings.Add確定,但是當表單出現時,我得到關於無法綁定到名爲Id的屬性或列的錯誤。我試圖替換DataBindings.Add代碼來使用BindingSource1而不是Items,但是我得到了類似的錯誤。

該類中的屬性名稱與Databindings.Add代碼中的名稱匹配。

有什麼想法?

感謝

更新:這是我的課:

Public Class Cheque 
    Public Id As String 
    Public Status As Byte 
    Public Amount As String 
    Public Number As String 
End Class 
+0

什麼是'Cheque'?這是一個簡單的實體嗎?或者它可能有某種自定義類型描述符? – 2011-02-28 12:32:08

回答

1

在你的示例代碼,就展現出公共領域,這通常是一個非常糟糕的主意。除非您非常努力(可以完成),否則數據綁定僅適用於屬性。因此,將這些字段更改爲屬性,它將起作用。

IIRC在vb.net這就是:

Public Class Cheque 
    Public Property Id As String 
    Public Property Status As Byte 
    Public Property Amount As String 
    Public Property Number As String 
End Class 

(但我的VB是生鏽)

或C#:

public class Cheque { 
    public string Id {get;set;} 
    public byte Status {get;set;} 
    public string Amount {get;set;} 
    public string Number {get;set;} 
} 
+0

是的,這就是你如何在VB.NET中執行自動屬性。但請注意,它們僅受編譯器版本10的支持。由於該問題標記爲「.net-2.0」,因此很可能您使用的是舊版本的VS。在這種情況下,你必須長時間寫出來。有關示例,請參閱[這裏](http://msdn.microsoft.com/en-us/library/e8ae41a4.aspx)。 – 2011-02-28 12:41:45

+0

我使用的是VS2010,但是它的.net-2.0項目不幸 – Jon 2011-02-28 12:44:37

+0

@Jon - 它應該仍然使用2010編譯器,不過呢? – 2011-02-28 12:45:19

相關問題