0

2 つのラベルを含む winform アプリ用のユーザー コントロールを作成しています。1 つはヘッダーとして、もう 1 つは を介し​​てデータソースにバインドする必要がありますMe.usercontrol1.databindings.add()。私はユーザーコントロールの設計の初心者なので、インターネットで検索して、コントロールのデータバインディングを作成する方法を見つけました。使用する必要があることに気付きましたが、ControlBindingsCollection正確な方法がわかりません。

次のコードを見つけて、 usercontrol に追加しました:

Private bindingContext_ As BindingContext
Private dataBindings_ As ControlBindingsCollection
Public Overrides Property BindingContext() As BindingContext
    Get
        If bindingContext_ Is Nothing Then
            bindingContext_ = New BindingContext()
        End If
        Return bindingContext_
    End Get
    Set(ByVal value As BindingContext)
        bindingContext_ = value
    End Set
End Property
<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> _
Public Overloads ReadOnly Property DataBindings() As ControlBindingsCollection
    Get
        If dataBindings_ Is Nothing Then
            dataBindings_ = New ControlBindingsCollection(Me)
        End If
        Return dataBindings_
    End Get
End Property

これでパラメーターを設定usercontrol1.databindingsできますが、このバインディングから単一の戻り値をユーザーコントロールに接続する必要があり、label2.Text方法がわからないため、明らかに何かが欠けています。

私の問題を解決するのを手伝ってくれる人はいますか?

前もって感謝します。

4

1 に答える 1

1

これを機能させるために質問のコードは必要ないと思います。

UserControl でその 2 番目のラベルを使用するプロパティを作成してみてください。

Property LabelData As String
  Get
    Return Label2.Text
  End Get
  Set(value As String)
    Label2.Text = value
  End Set
End Property

次に、データバインディングをそのプロパティにマップするだけです:

myUC.DataBindings.Add("LabelData", testObject, "Text", False, _
                      DataSourceUpdateMode.OnPropertyChanged)

testObject は、この例では Text プロパティを持つ単純なクラス オブジェクトであり、INotifyPropertyChangedインターフェイスを実装しています。

于 2013-04-24T15:26:57.097 に答える