none
怎样才能利用Msgbox的计算能力? RRS feed

  • 问题

  • 我发现Msgbox可以直接计算数学计算式,比如在代码中写  Msgbox(3+4*5+(9/3)-7^2) ,弹出窗口会显示计算的结果。

    能不能将textbox里的计算式赋给Msgbox让它来计算呢?我这样写 Msgbox(textbox1.text),只会把输入的东西原样输出。

    有没有什么方法能让Msgbox计算textbox里的式子,这样不就是一个强大的计算器吗?

    我对VB.NET了解太少,如果有什么方法能实现或者我的想法有什么不足请各位指教。

    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

     

    大家说的都有道理,只是考虑的方向不同。

    看了这个帖子,感觉也有些帮助

    http://social.msdn.microsoft.com/Forums/zh-CN/vbasiczhchs/thread/3da69b51-20a7-44a4-abb3-73b2a7106c32

     

    个人感觉 eval 最方便。

    2011年2月10日 1:54

答案

  • 您好,这个是Msgbox方法能接受多种类型而给您的假象。

    当调用Msgbox(3+4*5+(9/3)-7^2)时,先是执行3+4*5+(9/3)-7^2(这些都是标准的int类型,自会调用.net自身的计算功能),然后Msgbox将结果转型为字符串,然后显示。

    当调用Msgbox(textbox1.text)时,因textbox1.text就是字符串所以直接显示。

    据我了解,.net并无提供能将字符串转为数字计算的功能。需要我们自己来实现。

    • 已标记为答案 Homer_MSDN 2011年2月10日 3:52
    2011年2月10日 2:36

全部回复

  • 您好,这个是Msgbox方法能接受多种类型而给您的假象。

    当调用Msgbox(3+4*5+(9/3)-7^2)时,先是执行3+4*5+(9/3)-7^2(这些都是标准的int类型,自会调用.net自身的计算功能),然后Msgbox将结果转型为字符串,然后显示。

    当调用Msgbox(textbox1.text)时,因textbox1.text就是字符串所以直接显示。

    据我了解,.net并无提供能将字符串转为数字计算的功能。需要我们自己来实现。

    • 已标记为答案 Homer_MSDN 2011年2月10日 3:52
    2011年2月10日 2:36
  • 这个应该是编译器的计算功能,在运行的时候计算的话,建议用jscript.net的eval

    The following is signature, not part of post
    Please mark the post answered your question as the answer, and mark other helpful posts as helpful, so they will appear differently to other users who are visiting your thread for the same problem.
    Visual C++ MVP
    2011年2月10日 3:23
    版主
  • 您好,如果我想设计一个能直接计算如(3+4*5+(9/3)-7^2)这样的式子的程序,应该遵循什么思路呢?

    2011年2月10日 4:00
  • 您好,我的思路:需要先将计算表达式转为后则表达式,然后可用职责链模式来处理。

    我在codeplex.com上找到一个计算引擎:http://calculator.codeplex.com/releases/view/51101

    希望有帮助。

    2011年2月10日 6:33
  • 靠,这个绝对可以的,在Data什么里面,直接有一个方法的,我都试过了,这明摆着是可以的。怎么说不行的反而是最佳答案?
    2011年2月11日 1:11
  • 您好

    請參考

    計算以字串表示的數學運算式結果

    http://www.dotblogs.com.tw/chou/archive/2010/12/03/19881.aspx

    如何在vb中求出由若干变量组成的算数表达式的结果?

    http://social.msdn.microsoft.com/Forums/zh-CN/vbasiczhchs/thread/0dfcffdf-8537-4a6b-a047-54f6dd132c0e

    NCalc: 處理數學運算的好幫手

    http://msdn.microsoft.com/zh-tw/ee854988.aspx


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年2月11日 1:31
  • Private Sub Form_Load()
    Form1.Visible = False
    Set sc = CreateObject("ScriptControl")
    Do
    num = InputBox("请输入算式", "vb计算器")
    If num = "" Then Exit Do
    sc.Language = "VBScript"
    If sc.Eval(num) Then
    MsgBox sc.Eval(num), 0, "计算结果"
    Else
    MsgBox "请输入正确的算式"
    End If
    Loop
    End Sub
    2011年2月19日 5:53