我对C#和.NET Framework有了基本的了解,已经分配了一个构建POS(销售点)屏幕的任务,目前我遇到了一个小的砖墙,试图将与货币相关的字符串转换为double。
我在屏幕上有两个列表框和几个产品按钮,这些按钮是使用提供给我们的库类填充的(本质上表明我们可以使用组件)
一个列表框包含产品名称,而另一个认为产品的价格,当一个产品按钮被选中它的按钮文本需要的产品名称和标签中没有被添加到价格列表框中的价格。
我的问题是我想在列表框中将价格显示为一种货币,并且它显示全为“ 0”,因此我可以通过以下任一方式来做到这一点
value.ToString("C");
string.Format("{0:C}",value);
或使用Convert等
虽然因为如果我想通过双击从列表中删除商品,我已经这样做了,所以我需要从总价中扣除价格,所以我需要转换回两倍的价格,尽管由于其当前格式,当我遇到错误时尝试执行我环顾四周的操作,但似乎仍然找不到,我唯一看到的选择就是将字符串值保持原样,而不是将其转换为货币格式。
the ERROR: {"Input string was not in a correct format."}
代码段
private void panelBtns_Click(object sender, EventArgs e)
{
Button panelBtn = (Button)sender;
lstProduct.Items.Add(panelBtn.Text);
double price = Convert.ToDouble(panelBtn.Tag);
>>CURRENCY FORMAT>> lstPrice.Items.Add(string.Format("{0:C}",price));
dblTotal = dblTotal + Convert.ToDouble(panelBtn.Tag);
lblTotal.Text = string.Format("{0:C}", dblTotal);
lblOutput.Text = "0";
lblOutput.Tag = "0";
}//End Panel Buttons
private void lstProduct_DoubleClick(object sender, EventArgs e)
{
int index = lstProduct.SelectedIndex;
lstPrice.SelectedIndex = lstProduct.SelectedIndex ;
>> ERROR HERE >> double price = Convert.ToDouble(lstPrice.GetItemText(lstPrice.SelectedItem));
dblTotal = dblTotal - price;
lstProduct.Items.RemoveAt(index);
lstPrice.Items.RemoveAt(index);
lblTotal.Text = string.Format("{0:C}", dblTotal);
}
任何人都不会知道如何解决这个问题,尽管我创建了一个看不见的列表来存储标签的实际值,以便以后可以使用它,但是还有其他方法吗?
注意:我也知道使用double货币不是很可靠
解析C
格式的最简单方法可能是
Double.Parse(text, System.Globalization.NumberStyles.Currency)
当然,您总是想使用Decimal
货币来处理,并且Decimal.Parse
采用相同的参数。
但是,在这种情况下,您希望将内部数字值及其文本表示形式存储在一起,而不是转换为字符串然后解析回数字。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句