该程序是一个小型数据库,用于产品订购,我将结构中的唯一订单和枚举中的productNames保留(基本上用于练习)。我只有3个产品名(Product0,Product1,Product2),它们被添加到组合框(cbo_productNameEdit.DataSource = Enum.GetNames(typeof(productNames));
)。
无论如何,在保存订单后,我希望这个组合框将其选定的项目更改为已保存产品的名称,但它没有这样做。我用MessageBox检查了它,看看它是否没有正确存储......
MessageBox.Show(Orders[cbo_productID.SelectedIndex].productName.ToString());
cbo_productNameEdit.SelectedItem = Orders[cbo_productID.SelectedIndex].productName;
...消息框返回了Product2,它确实是正确的,但所选项目保留在Product0。
答案 0 :(得分:0)
您可以做的一件事就是在组合框上设置 SelectedIndex 而不是 SelectedItem 属性。默认情况下,枚举是基于0的整数,因此索引将对应于枚举的值。
cbo_productNameEdit.SelectedIndex = (int)Enum.Parse(typeof(productNames),
Orders[cbo_productID.SelectedIndex].productName.ToString());
答案 1 :(得分:0)
因为您使用了.DataSource
属性来填充ComboBox
项目
您需要使用.SelectedValue
来设置选择项目
cbo_productNameEdit.SelectedValue = Orders[cbo_productID.SelectedIndex].productName;
来自MSDN:ComboBox.SelectedValue