0

カスタム ComboBox コントロールを作成し、カスタム プロパティ "ActiveValue" を DataSet にバインドしたいと考えています。私は次のようにします:

cboMyComboBox.DataBindings.Add(New System.Windows.Forms.Binding("ActiveValue", Me.dstDetails, "Table.CBOVALUE", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged, ""))
...

Public Property ActiveValue As String
    Get
        Return _activeValue
    End Get
    Set(value As String)
        If _activeValue <> value Then
            _activeValue = value
            Me.Text = _activeValue
        End If
    End Set
End Property

DataSet から値を取得しますが、更新できません。どの値を選択しても、更新されないだけです。このプロパティは単純なテキスト フィールドです。派生した ComboBox クラスに INotifyPropertyChanged を実装しようとしましたが、役に立ちませんでした。誰かがどこに問題があるか教えてもらえますか? ありがとう

更新: クラスにバグが見つかりましたが、Rex が提供するデータバインディング書き込みメソッドも役に立ちます。お時間をいただきありがとうございます。

4

1 に答える 1

1

完全な実装を見ることができないため、理由はわかりませんが、データバインディングで値をオブジェクトに書き戻すことを本当に強制したい場合は、DataBinding.WriteValue() を試してください。そのため、ComboBox クラスで、適切な場所 (おそらくいくつかのテキスト) でこれを行います変更されたイベント ハンドラー):

   theDataBinding = Me.DataBindings(theIndex) ' you may find the binding by the bound field name
   theDataBinding.WriteValue()
于 2013-08-12T08:51:31.747 に答える