从ComboBox BindingSource获取对象

问题描述 投票:0回答:1

我正在使用C#Winforms开展一个学校项目,我必须创建一个汽车销售发票并打开一个新表格,其中包含从组合框中选择的车辆信息。如何根据组合框中的SelectedItem获取Vehicle对象或其属性?

Vehicle对象位于一个列表中,该列表绑定到绑定到组合框的BindingSource。我能够将静态字符串传递给此赋值的另一个组件中的新表单,但我无法弄清楚如何检索对象信息。

我的车辆列表绑在组合框上。 DataRetriever是我们为我们提供Vehicle对象的类。它们具有自动实现的属性(品牌,型号,ID,颜色等)

List<Vehicle> vehicles = DataRetriever.GetVehicles();
            BindingSource vehiclesBindingSource = new BindingSource();
            vehiclesBindingSource.DataSource = vehicles;
            this.cboVehicle.DataSource = vehiclesBindingSource;
            this.cboVehicle.DisplayMember = "stockID";
            this.cboVehicle.ValueMember = "basePrice";

我希望能够将信息传递到此表单,并显示有关带有标签的所选车辆的信息。

private void vehicleInformationToolStripMenuItem_Click(object sender, EventArgs e)
        {
            VehicleInformation vehicleInformation = new VehicleInformation();
            vehicleInformation.Show();
        }
c# winforms data-binding combobox
1个回答
0
投票
  1. Form_Load List<VecDetails> lstMasterDetails = new List<VecDetails>(); private void frmBarcode_Load(object sender, EventArgs e) { VechicleDetails(); BindingSource vehiclesBindingSource = new BindingSource(); vehiclesBindingSource.DataSource = lstMasterDetails; this.comboBox1.DataSource = vehiclesBindingSource; this.comboBox1.DisplayMember = "stockID"; this.comboBox1.ValueMember = "basePrice"; }
  2. VechicleDetails()方法我只是生成样本值所以我可以他们他们到ComboBox private void VechicleDetails() { //Sample Method to Generate Some value and //load it to List<VecDetails> and then to ComboBox for (int n = 0; n < 10; n++) { VecDetails ve = new VecDetails(); ve.stockID = "Stock ID " + (n + 1).ToString(); ve.basePrice = "Base Price " + (n + 1).ToString(); lstMasterDetails.Add(ve); } }
  3. 现在在comboBox1_SelectedIndexChanged事件我得到所选项目的价值 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { try { string strStockId = comboBox1.Text.ToString(); string strBasePrice = (comboBox1.SelectedItem as dynamic).basePrice; label1.Text = strStockId + " - " + strBasePrice; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }

Example

© www.soinside.com 2019 - 2024. All rights reserved.