结构和枚举,Combobox.SelectedItem
Struct & Enum, Combobox.SelectedItem
该程序是用于产品订购目的的类似迷你数据库的东西,我将唯一的订单保存在一个结构中,并将产品名称保存在一个枚举中(基本上是为了练习)。我只有 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。
您可以做的一件事是在组合框中设置 SelectedIndex 而不是 SelectedItem 属性。默认情况下,枚举是从 0 开始的整数,因此索引将与枚举的值对应。
cbo_productNameEdit.SelectedIndex = (int)Enum.Parse(typeof(productNames),
Orders[cbo_productID.SelectedIndex].productName.ToString());
因为您使用 .DataSource
属性 填充 ComboBox
项目
您需要使用.SelectedValue
来设置选择项
cbo_productNameEdit.SelectedValue = Orders[cbo_productID.SelectedIndex].productName;
来自 MSDN:ComboBox.SelectedValue
该程序是用于产品订购目的的类似迷你数据库的东西,我将唯一的订单保存在一个结构中,并将产品名称保存在一个枚举中(基本上是为了练习)。我只有 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。
您可以做的一件事是在组合框中设置 SelectedIndex 而不是 SelectedItem 属性。默认情况下,枚举是从 0 开始的整数,因此索引将与枚举的值对应。
cbo_productNameEdit.SelectedIndex = (int)Enum.Parse(typeof(productNames),
Orders[cbo_productID.SelectedIndex].productName.ToString());
因为您使用 .DataSource
属性 填充 ComboBox
项目
您需要使用.SelectedValue
来设置选择项
cbo_productNameEdit.SelectedValue = Orders[cbo_productID.SelectedIndex].productName;
来自 MSDN:ComboBox.SelectedValue