Я работаю над формой Windows с несколькими комбинированными списками. В зависимости от того, что выбрано в первом поле со списком, определяет, какие элементы заполняются во втором поле со списком. Проблема, с которой я сталкиваюсь, заключается в том, что если я выбираю ChoiceA в ComboBox1, ComboBox2 очищается () ed, а затем заполняется ChoiceX, ChoiceY и ChoiceZ. Затем я выбираю ChoiceB в ComboBox1, ComboBox2 очищен (), но нет вариантов для добавления в ComboBox2, поэтому он должен оставаться пустым. Проблема в том, что после выбора ChoiceB в ComboBox2 появляется большое белое поле с тремя пустыми слотами. Итак, в основном, сколько бы элементов не было очищено N, именно столько пустых слотов появляется после выбора варианта B.
Это может немного сбить с толку, надеюсь, я достаточно хорошо объяснил.
- РЕДАКТИРОВАТЬ Добавление кода, надеюсь, это поможет прояснить ситуацию. Кстати, mainItemInfo - это еще один класс типа "модели просмотра". Он возвращается в форму для внесения обновлений.
private void cmbType_SelectedIndexChanged(object sender, EventArgs e)
{
DropDownItem item = (DropDownItem)cmbType.SelectedItem;
if (!String.IsNullOrWhiteSpace(item.Text))
{
cmbBrand.Enabled = true;
btnAddBrand.Enabled = true;
mainItemInfo.FillBrands(new Dictionary<string, string> { { "Type", item.Text } });
mainItemInfo.SyncBrands(this);
}
}
public void FillBrands(Dictionary<string, string> columnsWhere)
{
// Clear list
Brands.Clear();
// Get data
StorageData storage = new StorageData(File.ReadAllLines(ItemsFilePath));
// Fill Brands
foreach (string type in storage.GetDistinctWhere(columnsWhere, "Brand"))
{
Brands.Add(type, new DropDownItem(type, type));
}
}
public void SyncBrands(IPopupItemInfo form)
{
form.ClearcmbBrand();
var brands = from brand in Brands.Keys
orderby Brands[brand].Text ascending
select brand;
foreach (var brand in brands)
{
form.AddTocmbBrand(Brands[brand]);
}
}
public void AddTocmbBrand(DropDownItem brand)
{
cmbBrand.Items.Add(brand);
}
public void ClearcmbBrand()
{
cmbBrand.Items.Clear();
}