2013-04-15 34 views
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 

回答

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...控件是叔ext-box,以及它们的文本值的数字版本。

注意:不要删除P(您RemoveCharacter线) - 否则,所有的脚本看到的是v((1*46)/3600) - 这不涉及您的输入在所有

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