0

我想知道如何将价格添加到以下内容:

private void OrderForm_Load(object sender, EventArgs e)
{
    comboBox1.Items.Add("0");
    comboBox1.Items.Add("10");
    comboBox1.Items.Add("20");
    comboBox1.Items.Add("30");
    comboBox1.Items.Add("40");
    comboBox1.Items.Add("50");
    comboBox1.Items.Add("60");
    comboBox1.Items.Add("70");
    comboBox1.Items.Add("80");
    comboBox1.Items.Add("90");
    comboBox1.Items.Add("100");
    comboBox2.Items.Add("None");
    comboBox2.Items.Add("Chocolate");
    comboBox2.Items.Add("Vanilla");
    comboBox2.Items.Add("Strawberry");
    comboBox3.Items.Add("Paypal");
    comboBox3.Items.Add("Visa Electron");
    comboBox3.Items.Add("MasterCard");
    comboBox4.Items.Add("None");
    comboBox4.Items.Add("Small");
    comboBox4.Items.Add("Medium");
    comboBox4.Items.Add("Large");
}

“0 - 100”数字的价格应该是“15 英镑”吗?

4

2 回答 2

4

组合框将方法的结果显示ToString为项目的名称。这意味着您可以创建自己的包含名称和价格的对象,并覆盖ToString以仅显示名称。例如:

public class MyItem
{
    private readonly string name;
    public string Name
    {
        get { return this.name; }
    }

    private readonly decimal price;
    public decimal Price
    {
        get { return this.price; }
    }

    public MyItem(string name, decimal price)
    {
        this.name = name;
        this.price = price;
    }

    public override string ToString()
    {
        return this.name;
    }
}

然后创建并添加您自己的对象。

comboBox2.Items.Add(new MyItem("Chocolate", 10.00m));
comboBox2.Items.Add(new MyItem("Vanilla", 15.00m));
comboBox2.Items.Add(new MyItem("Strawberry", 8.50m));

每当您从组合框中获得一个项目(例如当前选定的项目)时,该Price属性都会告诉您价格。例如:

MyItem selectedItem = (MyItem)comboBox2.SelectedItem;
decimal totalPrice = selectedItem.Price + 1.00m /* Shipping */;
于 2013-03-11T23:22:58.247 回答
0

要直接回答您的问题,您可以使用 ComboBox.SelectedIndex 值,如下所示:

if (comboBox4.SelectedIndex < 100) {
    price = 15;
}

不会把它放在我的代码中。以这种方式编写代码会让人尖叫“维护地狱”,因此请考虑重构代码。我打算按照 Martin 的使用面向对象存储名称/价格的解决方案提出一个建议,所以我建议尝试一下。

于 2013-03-11T23:40:27.620 回答