Изменение выбранного значения в comboBox - PullRequest
0 голосов
/ 22 сентября 2011

Я бы хотел дать клиенту возможность выбрать город из COMBOBOX, и после выбора города список улиц этого города должен быть в COMBOBOX2. Я попробовал следующий код, и я получил ошибку, во время первого запуска, может быть, кто-то может объяснить мне это?

private void Search_by_Apartment_Load(object sender, EventArgs e)
    {
        List<Cities> city = DAL.cities();
        cmBxCity.DataSource = city;//Here he ran the second function, why?
        cmBxCity.DisplayMember = "city";
        cmBxCity.ValueMember = "cityID";
    }

    private void cmBxCity_SelectedIndexChanged(object sender, EventArgs e)
    {

        List<Streets> street = DAL.streets(Convert.ToInt32(cmBxCity.SelectedText));
        // List<Streets> street = DAL.streets(Convert.ToInt32(cmBxCity.SelectedValue));
        comBxStreet.DataSource = street;
        comBxStreet.DisplayMember = "street";
        //cmBxCity.ValueMember = "cityID";

    }

Ответы [ 2 ]

0 голосов
/ 23 сентября 2011

Событие SelectedIndexChanged наступает всякий раз, когда выбранный индекс изменяется программно или пользователем.

Как указывает Давиде Пирса, когда вы изменяете DataSource из cmBxCity, вы программно изменяете выбранный индекс,следовательно, вызывая событие cmBxCity.SelectedIndexChanged в этой строке:

cmBxCity.DataSource = city;//Here he ran the second function, why? 

Одно из возможных решений - использовать вместо этого событие SelectionChangeCommitted, которое вызывается только для изменений, внесенных пользователем.

0 голосов
/ 22 сентября 2011

при назначении DataSource элемента управления cmBxCity его selectedItem изменяется с нуля на один элемент, и это вызывает обработчик события cmBxCity_SelectedIndexChanged.

в вопросе, который вы говорите о COMBOBOX и COMBOBOX2, но в коде есть только один элемент управления: cmBxCity.

разве вы не должны показывать улицы во втором элементе управления с именем: cmBxStreet?

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