使用以下代码,我在TextBox (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");
答案 0 :(得分:1)
您可以做一些使您的生活更轻松的事情(假设您必须像对他人所说的那样保留一个TextBox。)
但是,在进入细节之前,问题似乎是您在解析表示数据行的文本时遇到了麻烦,这些数据包含要操作的数量。如果这是错误的假设,请忽略此答案。
好吧,回到原点...
与其尝试直接在TextBox中处理文本,不如从读取整个字符串作为行列表(即List<String>
)开始。您可以使用Split
函数或RegEx表达式来实现。 See here
对每行使用RegEx表达式,不仅可以标识行的类型(“ item”行还是底部的“ All”行)以及这些行的各个部分。例如,您可以使用正则表达式,该正则表达式从行尾开始,然后向后查找数字(以字符串形式)。将其结果用于Parse方法以获取实际的数字值。
最后,如果您仍然需要删除文本行(我不确定您是出于逻辑还是要显示文本的目的删除文本),只需将其从字符串列表中删除即可线。如果需要将其显示在UI中(看起来很可疑,在处理结束时应该为空白),只需使用Join
将行转换回字符串,然后将其设置回{{1 }}属性。
希望这会有所帮助!
标记
P.S。为了(尝试)避免诸如关于您的设计的评论之类的评论,它可以通过说“不幸的是,由于该问题之外的问题,我只能使用TextBox”来开始您的问题。在这里寻找答案。”至少应该减少那些告诉您“以其他方式做!”的回答。而不是回答您的问题。