2016-12-02 118 views
1

我有一个简单的应用程序,其中值被添加到列表框中,价格作为双精度值在字符串右边。我写了一个标签的代码,每次将项目添加到列表框时,该标签就会将价格加起来。当我从列表框中删除selecteditem时,如何更新标签。从列表中减去值时的更新标签

public void Form2_Load(object sender, EventArgs e) 
    { 

     foreach (Control butt in groupBox2.Controls) 
     { 
      if (butt is Button) 
      { 
       ((Button)butt).Click += Form2_Click; 
      } 
     } 
    } 

    public void Form2_Click(object sender, EventArgs e) 
    { 


     string st1 = ((Button)sender).Text; 

     if (st1 == "Family_Pizza") 
     { 
      price = 22.95; 

     } 
     else if (st1 == "Large_Pizza") 
     { 
      price = 16.95; 

     } 
     else if (st1 == "Medium Pizza") 
     { 
      price = 11.95; 

     } 
     else if (st1 == "Small Pizza") 
     { 
      price = 7.95; 

     } 
     else if (st1 == "Garlic Bread") 
     { 
      price = 4.95; 

     } 
     else if (st1 == "BBQ Ribs") 
     { 
      price = 9.95; 

     } 
     else if (st1 == "BBQ Wings") 
     { 
      price = 9.95; 

     } 
     else if (st1 == "Express Combo") 
     { 
      price = 5.95; 

     } 
     else if (st1 == "1.25 L Drink") 
     { 
      price = 4.50; 

     } 
     else if (st1 == "375 ml Drink") 
     { 
      price = 2.60; 

     } 
     else if (st1 == "600 ml Drink") 
     { 
      price = 3.50; 

     } 
     else if (st1 == "Ben 'n' Jerry Core") 
     { 
      price = 13.50; 

     } 
     else if (st1 == "Ben 'n' Jerry Pint") 
     { 
      price = 11.95; 

     } 


     s2 = price.ToString("C"); 


     string item = st1; 
     string value=s2.PadLeft(s2.Length+8,' '); 


     listBox1.Items.Add(item+value); 
     updprice = price + updprice; 
     label2.Text = updprice.ToString("C"); 

    } 


private void button3_Click(object sender, EventArgs e) 
{ 
    listBox1.Items.Remove(listBox1.SelectedItem); 
} 

enter image description here

+0

具体在哪里,你卡住了?事实是你的价值观被格式化为显示货币符号让你失望?向我们展示您试图执行的操作以及发生的错误,以便我们帮助您解决问题。考虑也使用不同的控制...像网格这样的底层价值仍然只是一个数字,但你可以告诉网格格式的数字包括货币符号。 –

+0

请编辑这个问题,并发布所有相关的代码,如果这是在方法内部显示完整的方法,并且向我们指出你的代码中的什么地方没有以你期望的方式发生, .. – MethodMan

+0

放置更新'label'值的完整代码。 –

回答

1

在你的事件中,你需要设定删除列表框项目前的标签值button3_Click

private void button3_Click(object sender, EventArgs e) { 
    double price = 0; 
    if (listBox1.SelectedItem.ToString().IndexOf("Family_Pizza") > -1) { 
    price = 22.95; 
    } 
    . 
    . 
    . 
    else if (listBox1.SelectedItem.ToString().IndexOf("Ben 'n' Jerry Pint") > -1) { 
    price = 11.95; 
    } 

    double label_value = Convert.ToDouble(label2.Text.Replace("$", "")); 
    label_value -= price; 
    label2.Text = label_value.ToString("C"); 
    listBox1.Items.Remove(listBox1.SelectedItem); 
} 
+0

谢谢你。这样可行。 –

+0

不客气@zia khan –