结构与Enum,Combobox.SelectedItem

时间:2015-07-09 11:57:44

标签: c# winforms struct combobox enums

该程序是一个小型数据库,用于产品订购,我将结构中的唯一订单和枚举中的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。

2 个答案:

答案 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