2016-04-27 5 views
0

データソース(POCOクラス)の10進数プロパティにバインドされたコントロールがあります。また、コントロールが通貨としてフォーマットされるように、コントロールの[データバインド]を設定しました。例えば。 DataBindingsを通じてデータソースにバインドされているときに、コントロールの生の値を取得する方法はありますか?

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

私はコントロールがバインドされていることを知っていて、それがバインドされたデータソースのどのプロパティに。

生の値(つまり、書式設定なしの値)をコントロール自体から取得することはできますか?

答えて

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>を使用できます。

関連する問題