2016-04-27 6 views
0

Ich habe ein Steuerelement, das an eine Dezimaleigenschaft der Datenquelle (POCO-Klasse) gebunden ist. Ich habe auch die Steuerelemente 'Databindings' so eingestellt, dass das Steuerelement als Währung formatiert ist. z.B.Wie erhält man den Rohwert der Kontrolle, wenn er an eine Datenquelle gebunden ist?

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

Durch die DataBindings Ich weiß, dass das Steuerelement gebunden ist und an welche Eigenschaft der Datenquelle es gebunden ist.

Ist es möglich, den Rohwert (dh den Wert ohne Formatierung) von der Steuerung selbst zu erhalten?

Antwort

0

Sie können den Wert erhalten BindingSource, aber ich nehme an, Sie wollen es machen dynamische und unabhängig von BindingSource, so können Sie den Rohwert von Datenquelle hinter der Steuerung auf diese Weise erhalten:

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

Auf diese Weise spielt der Datenquellentyp keine Rolle, und Sie können BindingSource, DataTable oder List<T> verwenden.

Verwandte Themen