【发布时间】:2017-02-22 10:46:58
【问题描述】:
我有一个BindingList 和objectAs 绑定到comboBox_1.DataSource(对象名称为DisplayMember)。我的objectA 由objectZ 和objectXs 的列表组成。该表单连接到该objectXs 列表中的一个特定元素。此表单上还有许多其他控件,它们显示 objectX 的不同属性的值。
下面是一些可视化的代码:
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";
如何使其他控件中的objectX 值更改以反映comboBox 中当前选择的值,同时保留“on-the-go”读取/写入数据的BindingList 属性?用代码表达它(也就是我想要实现的目标):
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 中,我必须创建一个保存按钮之类的东西,对吧?有没有更“响应式”的方式?
【问题讨论】:
标签: c# winforms data-binding