複数のコンボボックスを持つ Windows フォームに取り組んでいます。最初のコンボボックスで選択された内容に応じて、2 番目のコンボボックスに入力される項目が決まります。私が直面している問題は、ComboBox1 で ChoiceA を選択すると、ComboBox2 が clear() され、ChoiceX、ChoiceY、および ChoiceZ で埋められることです。次に、ComboBox1 で ChoiceB を選択します。ComboBox2 は clear() されますが、ComboBox2 に追加する選択肢がないため、空のままにする必要があります。問題は、ChoiceB を選択した後、ComboBox2 に 3 つの空のスロットがある大きな白いボックスがあることです。したがって、基本的に、どれだけ多くのアイテムがクリアされても N は、ChoiceB を選択した後に表示される空のスロットの数です。
これは少し混乱するかもしれませんが、十分に説明できれば幸いです。
-- コードを追加して編集します。問題が解決することを願っています。ところで、mainItemInfo は別の「viewmodel」型クラスです。更新を行うために、フォームに戻ってインターフェースします。
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();
}