如何在绑定到数据源时获取控件的原始值?

时间:2016-04-27 12:08:11

标签: c# winforms data-binding

我有一个绑定到数据源(POCO类)的十进制属性的控件。我还设置了控件' Databindings'以便将控件格式化为货币。例如

TextBox1.DataBindings.Add(new Binding("Text", this.bindingSource, "Amount", true, DataSourceUpdateMode.OnValidation, "", "C2"));

通过DataBindings我知道控件是绑定的,以及绑定到的数据源的属性。

是否可以从控件本身获取原始值(即没有任何格式的值)?

1 个答案:

答案 0 :(得分:0)

您可以使用BindingSource获取值,但我想您希望它更加动态且独立于BindingSource,因此您可以通过以下方式获取控件后面的数据源的原始值:

var binding = this.textBox1.DataBindings[0];
var obj = this.textBox1.BindingContext[binding.DataSource].Current;
var value = TypeDescriptor.GetProperties(obj)[binding.BindingMemberInfo.BindingField]
                          .GetValue(obj);

这样,数据源类型无关紧要,您可以使用BindingSourceDataTableList<T>