c# - 如何从总文本框中多次减去折扣文本框?
问题描述
我有总文本框和折扣文本框,我需要从总值中减去折扣,如果我多次输入折扣,我将如何将总值保存在变量中并从总值中减去折扣,例如:
总值 = 500 和折扣 = 100 然后总计 = 500 - 100 = 400 。我需要解决的情况假设我需要添加更多折扣或将折扣值从 100 更改为 200 我将如何编程以减去 500 - 200 = 300 而不是 400 - 200 = 200 。
我尝试了以下代码文本框键
private void txtdiscount_KeyPress(object sender, KeyPressEventArgs e)
{
decimal total = Convert.ToDecimal(textOrderTotal.Text);
decimal discount = Convert.ToDecimal(txtdiscount.Text);
if (e.KeyChar == Convert.ToChar(Keys.Return))
{
total = Convert.ToDecimal(textOrderTotal.Text) - Convert.ToDecimal(txtdiscount.Text);
textOrderTotal.Text = total.ToString();
}
}
如何从总计中减去一次以上的折扣从总计中减去,以及如何防止折扣值=或大于总值?
解决方案
您需要捕获原始总计。如果你有一个计算 的按钮Total
,你可以使用
private decimal _originalTotal = 0;
private void btnCalculate_Click(object sender, EventArgs e)
{
_originalTotal = decimal.Parse(textOrderTotal.Text);
}
或者,如果它Total
本身是手动输入的,
private decimal _originalTotal = 0;
private void textOrderTotal_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyCode == Keys.Return || e.KeyCode == Keys.Tab)
{
_originalTotal = decimal.Parse(textOrderTotal.Text);
}
}
这个想法是在应用折扣之前捕获原始总数。现在,您可以将折扣应用为
private void txtdiscount_KeyPress(object sender, KeyPressEventArgs e)
{
decimal total = _originalTotal;
decimal discount = Convert.ToDecimal(txtdiscount.Text);
if (e.KeyChar == Convert.ToChar(Keys.Return))
{
total = _originalTotal - discount;
textOrderTotal.Text = total.ToString();
}
}
请注意,您需要根据之前捕获的Original Total
. 还要注意 OP 中的以下代码
total = Convert.ToDecimal(textOrderTotal.Text) - Convert.ToDecimal(txtdiscount.Text);
您已经Text
在方法的前两行中将两个文本框中的 转换为十进制。您可以重复使用它们而不是再次转换。在这种特殊情况下,我们将使用捕获的原始总数。
total = _originalTotal - discount;
推荐阅读
- android - gradle 文件和我的项目中的导入错误
- php - 如果其中一个值包含使用php存储在表中的数字和字符串值,如何创建条件?
- python-3.x - 执行第一个 return 语句时 Python 代码不出来
- javascript - 带有 AND / OR 条件的多个 IF Javascript
- typeorm - class-transformer:序列化 typeorm manytoone 关系
- excel - 将文件另存为日期
- fonts - 无法在乳胶文档中使用清晰的 sans 字体 [Ubuntu 20.04 LTS]
- reactjs - 如何在反应中从另一个组件中的组件导出或调用方法?
- vue.js - v-app-bar 在低页面内容上向下伸展,而不是保持其默认高度
- reactjs - 如何在排序和过滤数据时为反应组件设置加载状态?