2017-02-22 7 views
0

objectAcomboBox_1.DataSource(オブジェクトの名前はDisplayMember)にバインドされています。私のobjectAは、objectZobjectXのリストで構成されています。フォームはそのobjectXのリストから1つの特定の要素に接続されています。このフォームには、objectXという異なるプロパティの値を示す多くのコントロールがあります。コントロールとBindingListの間のBindingList.List.Elementからの変更を反映します。

class objectA 
{ 
    class objectZ 
    { 
     public int Count { get; set; } 
    } 
    class objectX 
    { 
     public string Prop1 { get; set; } 
     public bool Prop2 { get; set; } 
    } 

    public string Name { get; set; } 
    public objectZ Z { get; set; } 
    public List<objectX> listX { get; set; } 
} 

BindingList<objectA> listA = new BindingList<objectA>(); 
comboBox_1.DataSource = listA; 
comboBox_1.DisplayMember = "Name"; 

私は「データの書き込み/読み取りのBindingList性質を維持しながら、それはとても他のコントロールでobjectX値はcomboBoxで現在選択された値を反映して変化させるにはどうすればよいの上・ザ:
はここでそれを視覚化するためにいくつかのコードです行く? (私が達成しようとしている別名何)コードでそれを表現するには、次の

textBox_1.Text = listA.GetWantedObjectX().Prop1; 
checkBox_1.Checked = listA.GetWantedObjectX().Prop2; 

void checkBox_1_CheckedChanged() 
{ 
    listA.GetWantedObjectX().Prop2 = checkBox_1.Checked; 
} 

私は、データを制御し、それはなるだろうobjectA.objectX currentObjectプロパティを必要とするだろう推測している:

currentObject = listA.GetWantedObjectX(); 
checkBox_1.Checked = currentObject.Prop2; 

しかし、currentObjectの変更はlistaAに反映されず、保存ボタンのようにsthを作成する必要がありますか?より反応的な方法がありますか?

答えて

0

私は基本的にはcurrentObjectに固執し、comboBox1_SelectedIndexChangedイベントのすべてを制御しています。ここではそのためのコードは次のとおりです。もちろん

objectA.objectX currentObject = null; 
int previousObjectIndex = 0; 
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    if (currentObject == null) 
    { 
     currentObject = listA[comboBox1.SelectedIndex].GetWantedObjectX(); 
     textBox1.Text = currentObject.Prop1; 
    } 
    else 
    { 
     currentObject.Prop1 = textBox1.Text; 

     if (!listA[previousObjectIndex].listX.Any(x => x.Prop1 == currentObject.Prop1)) 
      listA[previousObjectIndex].listX.Add(currentObject); 

     currentObject = listA[comboBox1.SelectedIndex].GetWantedObjectX(); 

     if (currentObject == null) 
      currentObject = new objectA.objectX(); 

     previousObjectIndex = comboBox1.SelectedIndex; 

     textBox1.Text = currentObject.Prop1; 
    } 
} 

これは似整備士を導入する必要があるだろうobjectZの取り扱いを、含まれていません。

関連する問題