Задать вопрос
georgich
@georgich

Как изменить значение combobox из другого combobox'а?

Приветствую!
Данные из базы загружаются в два типизированных листа. Необходимо при выборе данных в первом комбобоксе, чтобы автоматически выбирались данные из второго комбобокса.
Код такой:
private List<Department> _departmentList;
        private List<Client> _clientList;

        private void AddHardwareForm_Load(object sender, EventArgs e)
        {
            var department = new Department();
            var category = new Category();
            var client = new Client();
            var serviceman = new Serviceman();

            _departmentList = department.GetDepartmentList();
            _clientList = client.GetClientList();

            departComboBox.DataSource = _departmentList;
            departComboBox.DisplayMember = "title";
            departComboBox.ValueMember = "id";

            clientComboBox.DataSource = _clientList;
            clientComboBox.DisplayMember = "name";
            clientComboBox.ValueMember = "id";
        }

        private void clientComboBox_SelectedValueChanged(object sender, EventArgs e)
        {
           departComboBox.SelectedValue = _clientList.Find(item => item.Id == ((Client)clientComboBox.SelectedValue).Id).DepartmentId;
        }

Но при открытии формы получаю ошибку:
System.InvalidCastException: 'Не удалось привести тип объекта "System.Int64" к типу "HDLib.Client".'

Понятно что оно говорит, не совсем понятно как исправить. Пождскажите, пожалуйста.
  • Вопрос задан
  • 767 просмотров
Подписаться Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@yuopi
C# developer
(Client) clientComboBox.SelectedValue - вы пытаетесь скастить инт к клиенту

Вот так должно сработать ТОЧНО

private void comboBox1_SelectedValueChanged(object sender, EventArgs e)
        {
            departComboBox.SelectedItem = _departmentList.FirstOrDefault(d => d.Id == _clientList.Find(item => item == (Client)clientComboBox.SelectedItem).DepartmentId);
                
        }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы