次の方法でDataBindingを実行します
private List<MyEditor> Editors { get; set; }
private Dictionary<int,object> dictionary
private void SetEditors()
{
Editors.Clear();
foreach (var element in dictionary)
{
var editor = MyFactory.GetEditor();
editor.DataBindings.DefaultDataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
editor.DataBindings.Add("Value", element, "Value");
//some code
Editors.Add(editor);
}
//some more code
}
次に、GUIでの変更を行いますValue
。その後Editors[0]
、別のコードでdictionary
要素から値を取得しようとしますが、Editors[0].DataBindings["Value"].WriteValue()
データがに書き込まれるようにするために使用しますが、変更されていないことを確認しますdictionary
。
デバッガーでは、次の図を見ることができます。
Editors[0].DataBindings["Value"] {System.Windows.Forms.Binding} System.Windows.Forms.Binding
....
DataSource {[0, oldValue]} object {System.Collections.Generic.KeyValuePair<int,object>}
....
その間
Editors[0].Value "newValue" object {string}
どうなり得るか?どんなアイデアにも感謝します。