richtextbox应用程序测试c#

时间:2015-08-04 20:10:51

标签: c# richtextbox

我对c#很新。我创建了一个表单。一个richtextbox和一个按钮。

我有一个运算符列表:Sum,Subtract,Multi,Div。我想运行一个小的richtextbox测试。例如,在richtextbox中我写了一个文本(例如Sum(1,2)),然后单击按钮。返回结果(例如3)在richtextbox中打印。

我的想法是使用字符串包含

foreach( var element in operatorlist)
{
  string text=richtextbox.text;
  if( text.contains(element)== true)
  {
     element(parameter1,parameter2);//something like this
  }
}

我在右排遇到了两个问题。

我的第一个问题是如何从richtextbox文本中获取数学运算。有没有比我更好的方式?

我的第二个问题是,一旦我们知道了运算符,如何将richtextbox中的两个参数分配给运算符。

我不是要求编码,我只是在寻找想法。如果你有一个好主意并希望分享。

2 个答案:

答案 0 :(得分:1)

您可以使用 DataTable.Compute 函数评估表达式:

int p1 = 1 ; string s1 = p1.ToString() ;
int p2 = 2 ; string s2 = p2.ToString() ;
int p3 = 3 ; string s3 = p3.ToString() ;
// Compute (p1+p2)*p3 ==> 9
int result = new DataTable().Compute( "("+s1+"+"+s2+")*"+s3+")","") ;

或直接:

string expression = "(1+2)*3" ;
int result = new DataTable().Compute(expression,"") ;

答案 1 :(得分:0)

  1. 我认为这取决于个人风格。你的方式肯定会奏效,对你这么好。我这样做的方法是创建一个字符串字典到枚举。例如,所述字典和枚举可能如下所示:
  2. enum Operator { Addition = 0, Subtraction = 1, Multiplication = 2, Division = 3, etc};

        var operatorDictionary = new Dictionary<string, Operator>() 
        {
            {"Addition", Operator.Addition},
            {"Subtraction", Operator.Subtraction},
            etc...
        };
    

    然后获得你想要的价值

    Operator operation;
    operatorDictionary.TryGetValue(string operationString, out operation);
    

    然后你必须构建一些代码来切换操作符并执行正确的操作。甚至有一种方法可以将字符串转换为枚举,这样也可以。

    1. 看起来参数的格式是一致的,所以你只需要创建一个简单的方法,用括号和逗号分割,然后返回它找到的字符串。
    2. 如果您需要更多解释,请告诉我。