0

我有一个表达式v((P1*P46)/3600),其中 p1 来自一个文本框,而 p46 来自另一个文本框

例如:v((2.0*3.2)/3600)

我该如何计算呢?

这是我的代码:

Private Function calculatevitalexpression(ByVal strformulla As String, ByRef numtxt As TextBox, ByRef dtable As DataTable)
    Try
     strformulla =v((2.0*3.2)/3600)
        Dim Sc As New MSScriptControl.ScriptControl
        Sc.Language = "VBSCRIPT"
        strformulla = RemoveCharacter(strformulla, "P")
        Dim res As Double = Convert.ToDouble(Sc.Eval(strformulla))
        Dim result As Decimal = Math.Round(res, decimalplaces)
        numtxt.Text = result

     Finally
        'frmW.Close()
    End Try
End Function
4

1 回答 1

0

要使用ScriptControl组件执行此操作,您必须通过 将所有可能的输入值传递到控件中AddObject,以便脚本控件知道什么P1P46 - 例如(使用 C# 作为示例):

foreach(var control in Controls) {
    if(control is TextBox &&
        control.Name.StartsWith("P"))
    { // ^^^ some crude way of finding the candidates
        Sc.AddObject(control.Name, double.Parse(control.Text), false);
    }
}

这将添加所有作为P...文本框的控件,以及它们的文本值的数字版本。

注意:不要删除P(您的RemoveCharacter行)-否则脚本看到的所有内容都是-根本v((1*46)/3600)不涉及您的输入。

但是,有可用的独立表达式评估引擎可以完成这项工作,但您仍然需要告诉他们外部值。

于 2013-04-15T07:11:25.633 回答