【问题标题】:add/subtract not giving accurate values in textbox c#加/减没有在文本框c#中给出准确的值
【发布时间】:2016-03-12 14:28:46
【问题描述】:

我正在使用此代码从 orderprice 文本框值中减去 discount txtbox 值按下退格按钮,它减去值,当我清空折扣文本框时,它给出输入字符串格式不正确的错误,例如 orderprice 中有 2000,当我输入 200 int 折扣时(首先它从总数中减去 2,然后是 20,然后200),最后它在 orderprice 文本框中减去并给出 1778,当我退格时,它再减去 20,然后再减去 2。不知道解决办法 请帮助提前谢谢。

 private void txt_disc_TextChanged_1(object sender, EventArgs e)
            {


                try
                {
                    if (!string.IsNullOrEmpty(txt_orderprice.Text) || string.IsNullOrEmpty(txt_disc.Text))
                 txt_orderprice.Text = (Convert.ToInt32(txt_orderprice.Text) - Convert.ToInt32(txt_disc.Text)).ToString();
                        txt_orderprice.Update();
                    }
                }

【问题讨论】:

  • 这个问题中没有任何东西暗示SQL,所以我删除了标签。
  • TextChanged 事件将在每次击键时触发。由于您不断从最近的订单价格而非初始订单价格中减去折扣,因此价值将不断缩小。
  • 如果使用另一个事件会怎样
  • 您可以使用Validating和Validated事件,但是您仍然需要解决缓存订单价格初始值的问题。在最终确定为零之前,用户可以输入多个折扣值。您希望如何恢复到原始订单价格?
  • 完成我已将代码粘贴到按键(输入)事件中

标签: c# textbox int subtraction


【解决方案1】:

我注意到代码有一些奇怪之处: if 声明说: 如果txt_orderprice.Text 不为空或为空;或者 如果 txt_disc.Text 为 null 或为空。

如果您希望它们都具有值,请选中并更正。

我建议你在if 后面加上大括号。就目前而言,txt_orderprice 始终会更新,无论 if 是什么。

您可以将两个 Convert.ToInt32 调用拆分为单独的代码行,并使用调试器检查您是否捕获了正确的数字。

阅读和使用@HABO 的有关事件的cmets。调试器将帮助您查看何时调用该方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-23
    • 2016-02-17
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多