数字键盘在支付界面的应用

在许多销售点(PoS)软件应用程序或类似环境中,支付屏幕需要一个“支付金额输入”功能。支付值(货币)几乎总是包括一个小数点。因此,如果不处理小数点并将其留给用户,当用户输入多个小数点或简单地添加小数点时,它可能会(确实会!)成为一个失败点,从而改变总金额(例如,$10.25的支付变成了$102.50)。因此,要么必须检查该值,要么在按键级别捕获它。更好的方法是在输入点进行管理!

使用代码

在Windows表单上添加按钮,并构建“价格数字键盘”:

使用了4x4的TableLayoutPanel。在键盘网格下方添加一个文本框,输出将放置在这里。

引入了一个公共字符串,它决定了键盘将扮演什么角色:

public string numberRole = "MONEY";

"Money"角色将为支付值设置一个阶段,其中将应用两位小数。例如,如果金额是10.25,将有以下步骤:

步骤1:0.01

步骤2:0.10

步骤3:1.02

步骤4:10.25

"DIGITS"角色将简单地将键盘变成一个没有小数点的数字。

还控制了小数点的数量和小数位数(预设为2)。

private void MakeAmount(string amountTxt) { decimal meanWhile; txtValue.Text = txtValue.Text + amountTxt; if (txtValue.Text.Length == 1) { txtValue.Text = "0.0" + txtValue.Text; } if (txtValue.Text.Length > 4) { meanWhile = Convert.ToDecimal(txtValue.Text) * 10; txtValue.Text = meanWhile.ToString("G29"); } }

如所见,根据拥有的内容,小数点会移动。对于每个数字,有相同的过程:

除了零,需要检查一些事情,所有其他Click事件都是相似的:

private void num2_Click(object sender, EventArgs e) { if (numberRole == "DIGITS") { txtValue.Text = txtValue.Text + "2"; } else MakeAmount(num2.Text); }

对于零:

private void num0_Click(object sender, EventArgs e) { decimal meanWhile; if (numberRole == "DIGITS") { txtValue.Text = txtValue.Text + "0"; } else { txtValue.Text = txtValue.Text + "0"; if (txtValue.Text.Length == 1) { txtValue.Text = "0.0" + txtValue.Text; } if (txtValue.Text.Length >= 4) { meanWhile = Convert.ToDecimal(txtValue.Text) * 10; txtValue.Text = meanWhile.ToString("G29"); } if (Convert.ToDecimal(txtValue.Text) < 1) { txtValue.Text = txtValue.Text + "0"; } if (txtValue.Text.IndexOf(".") < 0) { txtValue.Text = txtValue.Text + ".00"; } if (Convert.ToDecimal(txtValue.Text) > 1 && (txtValue.Text.Length - txtValue.Text.IndexOf(".") - 1 == 1)) { txtValue.Text = txtValue.Text + "0"; } } }

如何调用价格数字键盘:

numberpad showNumber = new numberpad(); showNumber.numberRole = "MONEY"; numberpad showNumber = new numberpad(); showNumber.numberRole = "DIGITS";
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485