Получение объекта из ComboBox BindingSource - PullRequest
0 голосов
/ 27 марта 2019

Я работаю над школьным проектом с C # Winforms, где мне нужно создать счет на продажу автомобиля и открыть новую форму с информацией о транспортном средстве, которое было выбрано в поле со списком.Как получить объект Vehicle или его свойства на основе SelectedItem в комбинированном списке?

Объекты Vehicle находятся в списке, который связан с BindingSource, который связан с комбинированным списком.Мне удалось передать статические строки в новую форму в другом компоненте этого назначения, но я не могу понять, как получить информацию об объекте.

Мой список транспортных средств, связанных с списком.DataRetriever - это класс, который нам дали, чтобы предоставить нам объекты Vehicle.У них есть автоматически реализованные свойства (марка, модель, идентификатор, цвет и т. Д.)

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();
        }

1 Ответ

0 голосов
/ 28 марта 2019
  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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...