Это действительно странно. Я хочу выбрать штат и загрузить города из этого состояния в другой комбинированный список.
Работает, КРОМЕ при выборе первого элемента в выпадающем списке:
Вот весь мой класс. Оператор if
в selectedIndexChanged
должен убедиться, что что-то выбрано. Проблема заключается в том, что если я установлю это значение на cmbState.SelectedIndex >= 0
, то возникнет исключение, потому что при начальной загрузке comboBox не имеет переменной .State
, а не .Value
.
Я не знаю, имеет ли это смысл.
private void MainForm_Load(object sender, EventArgs e)
{
LoadDepartmentsToComboBox();
}
private void LoadCitiesToComboBox(long StateID)
{
cmbCity.DataSource = null;
CityRepository cityRepo = new CityRepository();
cmbCity.DataSource = cityRepo.FindAllCities().Where(c => c.IDState == StateID);
cmbCity.DisplayMember = "Name";
cmbCity.ValueMember = "ID";
}
private void LoadDepartmentsToComboBox()
{
cmbState.DataSource = null;
StateRepository stateRepo = new StateRepository();
cmbState.DataSource = stateRepo.FindAllStates();
cmbState.DisplayMember = "Name";
cmbState.ValueMember = "ID";
}
private void cmbState_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbState.SelectedIndex > 0)
{
LoadCitiesToComboBox(Convert.ToInt64(cmbState.SelectedValue));
}
}
Если я делаю , использую cmbState.SelectedIndex >= 0
, тогда я получаю это исключение:
Невозможно привести объект типа
DocumentScannerDanyly.State для ввода
'System.IConvertible'. 'System.IConvertible'.
Когда я не использую SelectedIndex >= 0
и использую обычный старый >0
, тогда все работает, кроме тех случаев, когда выбран первый элемент, который ничего не делает; понятно, потому что он не принимает во внимание первый элемент.
Большое спасибо за помощь.