代码
private void button2_Click(object sender, EventArgs e)
        {
            string expression = CleanString(tbInput.Text);//MessageBox.Show(expression);
            if(expression .IndexOf ('(')>=0)//找到括号
            {
                   int i = expression .IndexOf ('(');
                   int j = expression.IndexOf(')');
                   string strsub = expression.Substring(i, j - i-1);//取出括号中的内容
                   double m = CalculateSimple(strsub);//计算括号的内容
                   expression = expression.Substring(0, i) + m.ToString() + expression.Substring(j + 1);//把计算结果加入剩余解析式字符串
            }
            double re = CalculateSimple(expression);//对表达式重新计算
            tbOutcome.Text = re.ToString();
        }        public double CalculateSimple(string ex) //取出括号内容进行计算,包含运算符和数值
        {
                  double end;
                  string a="",b="",t="";
                  char[] chEx = ex.ToCharArray();//把字符串转化为字符数组
                  char f, s='0';
                  int n = 0;//计数
                  int w =0;//记录位置
                  for (int i = 0; i < chEx.GetLength(0); i++)//循环取出字符,判断是否为运算符
                  {
                        char c = chEx[i];
                        if (c == '.' || (c >= 0 && c <= 9)) continue;//如果是数值就重新查找
                         
                        f = c;//找到一个运算符
                        n++;
                        if (n < 2)//如果运算符数少于2,再查找
                        {
                                   w = i;
                                   s = c;//把字符给第二个操作符
                                   continue;
                        }
                        if ((ComparePriority(f.ToString(), s.ToString()) == 1))//第一个运算符大于第二个运算符
                        {
                                   w = i;//记录位置
                                   s = f;
                        }
                   }
                        if (w > 0)
                        {
                            for (int j = w - 1; chEx[j] >= 0 && chEx[j] <= 9; j--)
                            {
                                a = chEx[j].ToString (); a = a + t; t = a;
                            }
                            for (int j = w + 1; chEx[j] >= 0 && chEx[j] <= 9; j++)
                            {
                                b = chEx[j].ToString (); b = t + b; t = b;
                            }
                            
                            switch (s)
                            { 
                                case '+':
                                end = Convert .ToDouble(a) + Convert .ToDouble(b);
                                break;
                                case '-':
                                end = Convert .ToDouble(a) - Convert .ToDouble(b);
                                break;
                                case '*':
                                end = Convert .ToDouble(a) * Convert .ToDouble(b);
                                break ;
                                case '/':
                                end = Convert .ToDouble(a) / Convert .ToDouble(b);
                                break ;
                                case '%':
                                end = Convert .ToDouble(a) % Convert .ToDouble(b);
                                break;
                                default :
                                    break ;                            }
                            
                                        //取出w前后的数值进行计算,再进行下一次迭代
                        }
                        return end; 
             }
        public int ComparePriority(string firstOp, string secondOp)
        {
            string arithm1 = "*/%";
            string arithm2 = "+-";
            if (arithm1.Contains(firstOp))//第一个操作符属于* / %
            {
                if (arithm2.Contains(secondOp))//第二个操作符属于+ -
                    return 1;
            }
            else if (arithm2.Contains(firstOp))
            {
                if (arithm1.Contains(secondOp))
                    return -1;
            }
            return end;
        }
按照这样运行,结果是错误的,但是不知道哪里出错了,求指点