richtextbox应用程序测试c#

richtextbox application test c#

我是 c# 的新手。我创建了一个表格。一个富文本框和一个按钮。

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

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

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

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

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

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

我不是要编码,我只是在寻找想法。如果您有好的想法并希望分享。

  1. 我认为这归结为个人风格。你的方式肯定会奏效,这对你来说太好了。我会这样做的方式是为枚举创建一个字符串字典。因此,例如,所述字典和枚举可能如下所示:

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. 看起来参数的格式一致,所以您只需创建一个简单的方法,按括号和逗号以及 returns 它找到的字符串进行拆分。

如果您需要更多解释,请告诉我。

您可以使用 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,"") ;