さて、私がまっすぐに考えているかどうか見てみましょう:
ソースからデータを読み取って、それをコントロールに適用したい場合は、データ バインディングの問題を解決するよりも、直接それを実行した方がよいでしょう。IOW、私はこれを行うこともできます:
foreach (var quad in listQH)
{
...
tb.Text = quad.Ph1;
...とは対照的に:
tb.DataBindings.Add(new Binding("Text", quad, "Ph1"));
ただし、基になるクラス インスタンス内の更新でコントロール (この場合は "tb" textBox) を更新し、ユーザーによるコントロールの更新でこれらのクラス インスタンス メンバーを更新する ("双方向バインディング") 場合は、次のようにする必要があります。 INotifyPropertyChanged を実装します。しかし、次のコードを変更する必要があります。
List<QHQuad> listQH = GetForPlatypus(PlatypusId, dow); // listQH locally declared
foreach (var quad in listQH)
{
int QHCell = quad.QH;
if ((QHCell >= 1) || (QHCell <= QUARTER_HOUR_COUNT))
{
string PH1CellToPopulate = string.Format("textBoxA_{0}", QHCell);
string PH2CellToPopulate = string.Format("textBoxB_{0}", QHCell);
string PH3CellToPopulate = string.Format("textBoxC_{0}", QHCell);
var tb = (TextBox)this.Contro.Find(PH1CellToPopulate, true).First();
tb.DataBindings.Add(new Binding("Text", quad, "Ph1"));
. . .
...に:
List<QHQuad> listQH; //global to the form
. . .
listQH = GetInfoForPlatypus(PlatypusId, dow);
foreach (var quad in listQH)
{
// the same as above
そして、最終的には、これらの潜在的に変更されたクラス インスタンス値を次の方法で保存できます。
foreach (var quad in listQH)
{
UpdateQH(quad); // quad contains members QH, Ph1, Ph2, and Ph3 ("UPDATE BLA SET PH1 = :Ph1, PH2 = :Ph2, PH3 = :Ph3 WHERE QH = :QH")
}