2013-04-15 63 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) - 這不涉及您的輸入在所有

但是,有獨立的表達式評估引擎可以完成這項工作,但您仍然需要告訴他們外部值。