使用相同数据源的多个组合框 (C#)

18 浏览
0 Comments

使用相同数据源的多个组合框 (C#)

更新:问题已解决,请参见下面的答案。

在我的一个表单中(一个Windows Forms应用程序),我有3个组合框。这些组合框需要显示一个价格列表(文本形式,带有一个整数的后端值)。

所有这些组合框都使用相同的数据源(一个类型为TSPrice的List<>,其中ValueMember设置为Price,DisplayMember设置为Description)。

我的问题是...每次我从下拉列表中选择一个价格选项,它们全部都改变为相同的值...这与它们都绑定到相同的数据源有关吗?

这是我如何绑定它们的方式:

var priceList = new List
                    {
                        new TSPrice(0, ""),
                        new TSPrice(0, "半天"),
                        new TSPrice(0, "全天"),
                        new TSPrice(0, "1 + 半天"),
                        new TSPrice(0, "2天"),
                        new TSPrice(0, "需要正式报价")
                    };
objInsuredPrice.DataSource = priceList;
objTPPrice.DataSource = priceList;
objProvSum.DataSource = priceList;
objInsuredPrice.ValueMember = "Price";
objTPPrice.ValueMember = "Price";
objProvSum.ValueMember = "Price";
objInsuredPrice.DisplayMember = "Description";
objTPPrice.DisplayMember = "Description";
objProvSum.DisplayMember = "Description";
objInsuredPrice.SelectedIndex = 0;
objTPPrice.SelectedIndex = 0;
objProvSum.SelectedIndex = 0;
//objInsuredPrice.DataSource      = objTPPrice.DataSource     = objProvSum.DataSource     = priceList;
//objInsuredPrice.ValueMember     = objTPPrice.ValueMember    = objProvSum.ValueMember    = "Price";
//objInsuredPrice.DisplayMember   = objTPPrice.DisplayMember  = objProvSum.DisplayMember  = "Description";
//objInsuredPrice.SelectedIndex   = objTPPrice.SelectedIndex  = objProvSum.SelectedIndex  = 0;

编辑:问题是它们都绑定到了相同的数据源,由Saurabh确认。这是我解决问题的方法。

var priceList = new List
                    {
                        new TSPrice(0, ""),
                        new TSPrice(1, "半天"),
                        new TSPrice(2, "全天"),
                        new TSPrice(3, "1 + 半天"),
                        new TSPrice(4, "2天"),
                        new TSPrice(5, "需要正式报价")
                    };
var insuredList = new TSPrice[5];
var TPList = new TSPrice[5];
var provList = new TSPrice[5];
priceList.CopyTo(insuredList);
priceList.CopyTo(TPList);
priceList.CopyTo(provList);
objInsuredPrice.DataSource = insuredList;
objTPPrice.DataSource = TPList;
objProvSum.DataSource = provList;
objInsuredPrice.ValueMember     = objTPPrice.ValueMember    = objProvSum.ValueMember    = "Price";
objInsuredPrice.DisplayMember   = objTPPrice.DisplayMember  = objProvSum.DisplayMember  = "Description";
objInsuredPrice.SelectedIndex   = objTPPrice.SelectedIndex  = objProvSum.SelectedIndex  = 0;

0