首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Basic ScriptControl不会写入变量吗?

Visual Basic ScriptControl不会写入变量吗?
EN

Stack Overflow用户
提问于 2013-12-19 13:46:48
回答 1查看 1.6K关注 0票数 0

我试图在Visual中制作一个(非常简单的)图形计算器,我使用了ScriptControl,这样用户就可以输入他们自己的公式,并使用eval()来获得结果。

代码语言:javascript
复制
Public Class Form1

    Dim sc As MSScriptControl.ScriptControl = New MSScriptControl.ScriptControl

    Private Sub Form1_KeyPressed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Me.KeyPress, Me.Load

        sc.Language = "VBScript"
        sc.AddObject("x", 355, True)
        sc.AddCode("Sub setx(xvalo)" + vbCrLf + "x = xvalo" + vbCrLf + "End Sub")

        Me.CreateGraphics.DrawLine(Pens.Black, New Point(0, 200), New Point(5000, 200))
        Dim eq As String = InputBox("Please enter equation:")
        Dim y As Double = 0
        For i As Double = 0 To 50 Step 0.01
            sc.Run("setx", i)
            y = sc.Eval(eq)
            Me.CreateGraphics.DrawLine(Pens.Blue, New Point(i * 10, y * 10 + 200), New Point(i * 10 + 0.1, y * 10 + 0.1 + 200))
        Next

    End Sub
End Class

当我运行这个并输入x + 2,甚至在提示符框中输入x时,我会得到一个异常:NotSupportedException: Object doesn't support this property or method: 'x'

但我之前加了x..。有人知道怎么解决这个问题吗?

还有一件奇怪的事情:每当我试图编辑sc.AddCode()参数时,它都说是COMException was unhandled

EN

回答 1

Stack Overflow用户

发布于 2014-01-06 16:43:16

ScriptControl,以便用户能够输入自己的方程。

您可以尝试使用DataTable中的Compute方法,而不是为DataTable设计的旧的遗留控件:

代码语言:javascript
复制
            Dim dt As New DataTable()
            Try
               Dim result2 As Double = CDbl(dt.Compute(ExpressionString, ""))
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

使用Try块,无效的公式不会停止执行

它还将计算嵌套括号‘(3*(12.223+ 15)) - 7)*21)/7’。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20683382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档