【问题标题】:Textbox containing calculation formula [duplicate]包含计算公式的文本框[重复]
【发布时间】:2016-03-22 11:54:54
【问题描述】:

我想使用 C# .Net 在 Windows 窗体中创建一个文本框,它能够处理简单的计算。例如,如果用户在文本框=5*7 中写入,那么当文本框得到验证时,textbox.Text = 35

我的问题是如何将字符串"=5*7" 转换为doubles 和符号以便进行计算。

【问题讨论】:

  • 看看这个SO question
  • @AlessandroD'Andria 这就是我要找的!
  • 这可能是重复的,但该帖子上的答案并不表明 CSharp.Scripting 是 imo 对其中任何一个的优越解决方案。

标签: c# .net winforms textbox calculator


【解决方案1】:

在这里使用 CodeAnalysis.CSharp.Scripting 库如何使用它wiki

【讨论】:

    【解决方案2】:

    您可以为此使用 CodeAnalysis.CSharp.Scripting 库。是available from Nuget

    using Microsoft.CodeAnalysis.CSharp.Scripting;
    using System;
    
    namespace ExpressionParser
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Demonstrate evaluating C# code
                var result = CSharpScript.EvaluateAsync("System.DateTime.Now.AddDays(-1) > System.DateTime.Now").Result;
                Console.WriteLine(result.ToString());
    
                //Demonstrate evaluating simple expressions
                var result2 = CSharpScript.EvaluateAsync(" 5 * 7").Result;
                Console.WriteLine(result2);
                Console.ReadKey();
            }
        }
    }
    

    nuget 包:

    【讨论】:

    • 我尝试包含 nuget 包 Microsoft.CodeAnalysis.CSharp.Scripting 1.1.1,但不包含命名空间 Microsoft.CodeAnalysis.CSharp.Scripting - 所以该示例无法在我的机器上编译。看起来,CSharpScript 不存在。你能解释一下吗?
    • @Matt 查看 Nuget 包的编辑
    • 你是对的,谢谢,我将包添加到一个空的控制台项目并插入你的代码。关键是在添加 nuget 包之前将框架版本更改为 4.6.1 - 在我的情况下,框架的默认设置是 4.5.2,它不起作用(它试图导入某些东西但失败了)。更改后,它立即生效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    相关资源
    最近更新 更多