2

次のコードを使用して、プロパティをテキストボックスコントロール(Windowsフォームプログラム)にバインドします。

textBox.DataBindings.Add("Text", myObject, myPropertyName, false, DataSourceUpdateMode.OnPropertyChanged);

プログラムのさらに進んだところで、このコードを使用して、リフレクションによってプロパティの値を更新します。

PropertyInfo propertyInfo = myObject.GetType().GetProperty(myPropertyName);
propertyInfo.SetValue(myObject, myNewValue, null);

プロパティの値オブジェクトで更新されています。コードがフォームに戻ると、デバッガーで確認できます。ただし、テキストボックスには新しい値は表示されません。

テキストボックスのデータバインディングをクリアして再度追加すると、新しい値が表示されます。

リフレクションによってプロパティ値を設定した後、データバインドされたテキストボックスに新しい値を自動的に表示させるにはどうすればよいですか?

4

1 に答える 1

0

リフレクションを使用しないで設定した場合、バインドは機能しますか? それでも機能しない場合は、おそらくオブジェクトに INotifyPropertyChanged を実装してから、セッターで OnPropertyChanged イベントを発生させる必要があります。これが WPF での動作です。Windows フォームも同じか似ていると思います。基本的にバインディングには、プロパティが変更されたことを知る方法が必要です。これは、そのイベントを処理することによって行われます。

于 2012-08-31T01:05:36.380 に答える