void Btn_addClick(object sender, EventArgs e)
{
double dbSecond = Convert.ToDouble(textBox1.Text);
if(!btnClear)
{
switch(strOper)
{
case "+":
sum += dbSecond;
break;
case "-":
sum = sum - dbSecond;
break;
case "*":
sum = sum * dbSecond;
break;
case "/":
sum = sum/dbSecond;
break;
}
if(sender == btn_add)
strOper = "+";
if(sum < 0)
{
sum = Math.Abs(sum);
textBox1.Text = Convert.ToString(sum + "-");
}
else
        textBox1.Text = Convert.ToString(sum);
btnClear = true;
}
先说一下这段程序,免得大家看的烦啊,O(∩_∩)O~以上是除法运算的按钮动作(其他运算雷同),strOper的作用是记录前一次运算的符号,因为是当前运算符确定了才将上一个运算运行(switch就是干这个事的);
显示结果的一个textBox1设置的是从右向左显示,这样在sum(结果)出现负数时就有问题,
比如sum=-3,textBox1会显示为 3-if(sum < 0)
{
sum = Math.Abs(sum);
textBox1.Text = Convert.ToString(sum + "-");
}
else
textBox1.Text = Convert.ToString(sum);
于是我做了一点调整如上,这样显示正常了。(也就是吧“-”放后面了,显示出来刚好)此时textBox1.Text 显示 -3
在利用得到的数继续运算,于是问题出现了:
double dbSecond = Convert.ToDouble(textBox1.Text);
读入的负数字符串格式不正确!
我想确实不正确,但这个显示结果问题如何解决才合适?

解决方案 »

  1.   

    textbox 属性RightToLeft 设置为no
      

  2.   

    textbox 属性RightToLeft 设置为no就可以直接把得到的数字转为比如-3 -2不会出现3-的情况、也就不会也现你下面所说的情况!!!
      

  3.   

    if(sum < 0) 

    sum = Math.Abs(sum); 
    textBox1.Text = Convert.ToString(sum + "-"); 

    else 
            textBox1.Text = Convert.ToString(sum); 
    btnClear = true; 
    }==>
    textBox1.Text=sum.ToString();
    btnClear=true;
      

  4.   

    好吧 就是windows自带计算器那样的。。讨论学习嘛,不在于要换个方式搞定就把问题扔了。。我很菜的,也包涵包涵。7楼那样就会出现负数显示 3- 的情况