我有一个绑定到数据源(POCO类)的十进制属性的控件。我还设置了控件' Databindings'以便将控件格式化为货币。例如
TextBox1.DataBindings.Add(new Binding("Text", this.bindingSource, "Amount", true, DataSourceUpdateMode.OnValidation, "", "C2"));
通过DataBindings
我知道控件是绑定的,以及绑定到的数据源的属性。
是否可以从控件本身获取原始值(即没有任何格式的值)?
答案 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);
这样,数据源类型无关紧要,您可以使用BindingSource
,DataTable
或List<T>
。