使用以下代码,我在文本框中逐行删除
(0, 39)
。现在最后一个地方有一个金额(1 any Articel 10.00)
,我想从总金额中扣除。为此,我使用 Substring
。但我得到了错误,因为可能没有解释空白。有一个简单的解决方案吗?谢谢
private void btnDelete_Click(object sender, EventArgs e)
{
if (TextBox1.Text.Length > 0)
{
txtTotal.Text = (Double.Parse(txtTotal.Text) - Double.Parse(TextBox1.Text.Substring(8, 2))).ToString("0.00");
TextBox1.Text = TextBox1.Text.Remove(0, 39);
}
if (TextBox1.Text.Length == 0)
{
MessageBox.Show("The cart is empty");
您可以做一些事情来让您的生活更轻松(假设您必须像您向其他人所说的那样保留一个文本框。)
在详细介绍之前,问题似乎是您在解析表示数据行的文本(包含您想要操作的金额的数据)时遇到困难。如果这是一个不正确的假设,请忽略此答案。
好吧,回到正题...
不要尝试直接在文本框中处理文本,而是先将整个字符串作为行列表读取(即
List<String>
)。您可以使用 Split
函数或 RegEx 表达式来完成此操作。 看这里
对每一行使用 RegEx 表达式,不仅可以识别该行的类型(“item”行或底部的“All”行),还可以识别这些行的各个部分。 例如,您可以使用从行尾开始并向后查找数字(以字符串形式)的 RegEx。将其结果用于您的 Parse 方法来获取实际的数值。
最后,如果您仍然需要删除文本行(我不确定您是否只是为了逻辑而删除文本,或者是否需要显示它),只需从行的字符串列表中删除它们即可。如果需要将其显示回 UI 中(值得怀疑,因为在处理结束时它似乎应该为空白)只需使用
Join
将行转换回字符串,然后将其设置回 TextBox.Text
属性。
附注为了(尝试并)避免评论,例如您收到的有关设计的评论,可以通过说“不幸的是,由于本问题之外的问题,我只能使用文本框,因此我在这里寻找答案。 至少这应该减少那些告诉你“以不同的方式做事!”的回应。而不是回答你的问题。