我有一个表达式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
答案 0 :(得分:0)
要使用ScriptControl
组件执行此操作,您必须通过AddObject
将所有可能的输入值传递到控件中,以便脚本控件知道P1
和{ {1}} 是 - 例如(在示例中使用C#):
P46
这会添加所有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
- 这根本不涉及您的输入 < / em>的
但是,有可用的独立表达式评估引擎可以完成这项工作,但您仍需要告诉他们外部值。