前言
雖然享受着博客的方便管理(感覺博客有點丑)= v =,但是還是想自己弄個服務器來記錄生活和學習,自主性高一點,主要能放一些自己的寫的項目運行,把自己的東西匯匯總,以后給別人看方便一點,服務器上也別省錢了,能白嫖的白嫖,能py的py,實在不行再買吧。(`・ω・´)
問題描述
設計一個功能完整、界面美觀的計算器應用程序。要求:
- (1) 用戶可通過鼠標點擊按鈕輸入運算數,在文本框中顯示,實現加、減、乘、除等四則運算及倒數、取反功能。要求實現良好的布局效果,通過對按鈕功能分類簡化編程。
- (2) 除了鼠標輸入外,可同時實現鍵盤輸入和運算(即通過鍵盤輸入數字及運算符時,達到與按鈕點擊一樣的效果)。
- (3) 實現小數運算和連續運算;
- (4) 實現sqrt,sin等科學計算功能;
- (5) 實現表達式解析等附加功能
解決思路
按鈕很多,通過不同的事件進行區分
比如四則運算事件為DoudleClicked,而sqrt,x^2,1/x,sinx為SingleClicked,將不同的按鈕分到同一個事件當中,代碼的復用性高,邏輯清楚。
使用MSScriptControl來解決表達解釋式
SScriptControl.ScriptControl sc = new MSScriptControl.ScriptControl();
sc.Language = "JavaScript";
textBox1.Text= sc.Eval(textBox2.Text.ToString()).ToString();
其中 textBox1.Text為結果,textBox2.Text是一個字符串,比如 1+3*5-4/2 它能幫直接進行所需要的乘處優先,再算加減,所以這邊我的代碼是有問題的,在處理四則運算的時候,如果處理SingleClicked事件時就會起沖突。如果各位有興趣的話還可以自己繼續去研究效果圖如下: