次のように、チェックボックスをカスタムオブジェクトのブール値プロパティにバインドしようとしています:
chkTableIsReadonly.DataBindings.Add(New Binding("Checked", objectBindingSource, "ApplyforVisa", True, DataSourceUpdateMode.OnPropertyChanged, False))
カスタム クラスは INotifyPropertyChanged インターフェイスをサポートします。
チェックボックスを最初に新しいオブジェクトにバインドすると、すべてが機能します。
objectBindingSource.Datasource = new objectToBindTo
ここに奇妙な部分があります:
- チェックボックスをオンにすると、プロパティ Set が呼び出され、INotifyPropertyChanged イベントが呼び出されて、全員が満足します。
- 同じボックスをオフにすると、プロパティ Set が呼び出されず、INotifyPropertyChanged イベントが呼び出されず、(さらに悪いことに) 別のレコードに移動できません。
object.ApplyForVisa プロパティを手動で設定するために CheckedChanged イベントをキャプチャしようとしましたが、成功しませんでした。プロパティ Set が呼び出され、INotifyPropertyChanged イベントが呼び出されますが、まだコントロールにロックされており、ナビゲートできません。
CheckedChanged イベントで bindingsource.endedit を呼び出してみましたが、成功しませんでした。
チェックボックスをオフにした場合にのみ問題になります。チェックボックスは、true または false の 2 つの状態です。
テキスト ボックス、コンボ ボックス、データグリッドなど、他のバインディングはすべて問題なく動作します。チェックボックスだけではありません。
私の唯一の考えは、バインディング ソース データ エラーのように振る舞うようですが、エラーはスローされません。バインディング ソースのデータ エラー イベント ハンドラーを追加すると、呼び出されません。