1

C# の DataBindings に問題があります。

DataRowView に設定された DataSource を持つ BindingSource があります

次に、バインディング ソースを使用して、コントロールのすべてのデータ バインディングを設定します。

これが私のコードです:

bsDataRecord.DataSource = myDataRow; //bsDataRecord is a BindingSource and myDataRow is a DataRowView
//Add Databinding to my controls
dateNextDate.DataBindings.Add("Value", bsDataRecord, "Next_Date", false, DataSourceUpdateMode.OnPropertyChanged); //DateTimePicker
textInformation.DataBindings.Add("Text", bsDataRecord, "Information", false); //TextBox
//more controls, etc

私のデータバインディングはすべて正常に機能します。コントロールを選択して値を入力すると、myDataRow が更新されます。

コードでコントロールの値を設定しようとすると、問題が発生します。

textInformation.Text="Test";

これを行うと、myDataRow は更新されません。myDataRow を更新できる唯一の方法は、更新したコントロールにフォーカスを与えることです。

それが理にかなっていることを願っています!? 誰かアイデアはありますか?

前もって感謝します。

c#.Net 4.0 を使用しています。

4

2 に答える 2

2

問題のあるデータ ソースのプロパティを設定した後、コントロールがデータ ソースから値を再読み取りできるようにする必要があります。多くの場合、への単純な呼び出し

dataBindingSource.ResetBindings(false); // false for value change not schema change

ただし、コントロールごとにこれを使用することもできます。

foreach (Binding b in myControl.DataBindings) b.ReadValue();

Binding.ReadValue() により、コントロールのバインドされたプロパティがデータ ソース値に設定されます。

お役に立てれば!

于 2012-10-15T14:09:43.000 に答える
0

(双方向ではない) バインディングのターゲットを「手動で」更新すると、バインディングが壊れ、動作しなくなります。これは正常な動作です。

したがって、バインディングを双方向にして、やりたいことを達成してください。

于 2012-10-15T14:05:28.253 に答える